スポンサーリンク

【コピペでOK!VBA】 選択したセルの数値を1000倍にする、1000で割るだけのマクロ

光の速さ 教則本に載らないパソコンの小技
この記事は約4分で読めます。
スポンサーリンク

誰得!?けど意外と使うかも?

Excelのある範囲の数値をまとめて1000倍したい、若しくは1000で割りたい。たったそれだけなのにやってみると意外と結構な手間。そんな時にこいつは効きます。

こんな人に有効

  • 千円単位の表と円単位の表が入り混じっていて手直しがめんどくさい
  • ホントに入り混じってて関数で直す方が逆に手間
  • そもそも「ピッ」と押したら「パッ」とならんのか!?という方

タイトルだけ見ると誰得感MAXな内容のプログラムですが、あったんですよ。実務で有効的な場面が。

この表の数値、明日までに全部千円単位に直したいんだけどいい方法ない?

という相談で持ってきたのがいろいろなセグメントで分けられたユーザー別の月別売上推移表。途中にはご丁寧に小計も挟まっていたり、罫線がきれいに引かれてあったりと色々体裁がなされています。

そのものは出せないのでサンプルとしてちゃちゃっと書いてみましたがこんな感じ。(中身のデータはフィクションです)

この表ではユーザー数26×12ヶ月=312個の数値を1000倍にするだけの簡単なお仕事ですが、ポチポチ打ち換える以外で対応するとすればこんな感じでしょうか。

数値を1000倍にする手順

  1. 打ち換える元表の隣とかの空きスペースに「=A1*1000」みたいな参照式を書く
  2. 打ち換える元表と同じ行列分式をコピー。(小計とか、関係ないところはすごい数字だったりエラーだったりするけどとりあえず無視)
  3. 書き換えたい値の範囲を選択してコピー
  4. 元表に「値を貼り付け」
  5. 替えたい全範囲で3,4を繰り返す
  6. 1で書いた式を消す

まぁこれでも全数打ち込むよりは断然早いですが、上の表みたいに範囲が一括で選べないのは地味にきついですし、これがもっと数があればそれ分きつい作業になってきます。コピーしてスクロールしてー、のスクロールも地味にイラっとする作業だしね。

この手順が今回提唱する方法では以下の手順になります。

  1. 打ち換えたい範囲を選択
  2. (ここでは)[Ctrl] +[R] キーを押すと範囲内が全部変わる

この方法だったら「ピッ」と押したら「パッ」となるんじゃないですかね!?

しつこいですがこのプログラムの内容自体はショボい内容です。組める人から見たらこんなの作るまでもない、とあきれるレベルかと思いますが、だからこそ、「そんなロジック考えてる場合じゃない」なんて切羽詰まった場面にサクッとコピペしてさっさと仕事を終わらせてしまいましょう。

痒い所の「ちょっと先」に手が届く。それがここのコンセプトです。(* ̄ー ̄)

使い方

※もし「開発」タブが無い場合は以下をお試し下さい。

  1. Excelの「開発」タブから「Visual Basic」をクリック
    VisualBasicを起動
  2. 開いた「Microsoft Visual Basic for Application」のメニューで「挿入」→「標準モジュール」を選択
    VBAに標準モジュールを追加
  3. 画面左側に「標準モジュール」というフォルダができるので展開する。
  4. 「Module1」をダブルクリックすれば、コードを打ち込むためのウィンドウが出てくるので、以下のコードをコピペ
    VBA標準モジュールにコード貼り付け
  5. 「開発」「マクロ」ボタン→オプションを選択して、ショートカットキーに使いたいキーを入力して「OK」をクリック。キーにカブりがあると回避が面倒なので空いてるキーを探した方が賢明。(Rキーは多分空いてます)
    マクロショートカット
  6. 打ち換えたい範囲を選択して、設定したショートカットキーを押す。
  7. あとは終わるまで選んでは打ち、選んでは打ち。

以下のコードをコピーして使用してください

Sub 選択部分を1000倍にするマクロ()

Dim c

'マクロでの出来事を非表示にする(高速化のため)
Application.ScreenUpdating = False

     For Each c In Selection
         c.Value = c.Value * 1000 '計算行
     Next c

'マクロでの出来事を表示にする
Application.ScreenUpdating = true

End Sub

中身を見るとやはり「なめとんのか!?」と言いたくなるほどのあっさり感。

見ての通り、逆に1000で割りたい場合は計算行の"*1000"を"/1000"に、別の数式にしたければ適当に打ち換えればいろいろ応用も可能です。

注意!
マクロで処理した内容は「元に戻す(undo)」が効きません。

以上、超地味だけど、地味に効くかもしれない小技でした!

私が机の上に常備している本です。Excelでなんか作るときにアイディアやヒントが欲しい時にちらっと見るようにしています。Excelの使い方を人に教えられるようになってから読んでも「知らなかった!」という内容が結構ありました。この手の本は機能紹介の側面が多いのですが、「資料の見せ方」や「時短に繋がるちょい技」など、仕事が早くキレイに終わることを目的としていて、他の教則本とベクトルが違います。

タイトルとURLをコピーしました