マクロは、時間のかかる繰り返し作業を自動化するため、Officeアプリケーションにとって時間節約の魔法のような存在です。今週の特集はExcelに焦点を当てており、Microsoftのマクロを特集した記事の一つです。今後数週間のうちに、他のOfficeプログラムのマクロについても詳しくお伝えしていきますので、どうぞお楽しみに。
1. 相対セル参照を使用する
マクロが1つのスプレッドシート内の特定のアプリケーションのみを対象としている場合を除き、常に相対セル参照/アドレス(デフォルトは絶対参照)を使用してください。マクロを他のスプレッドシートで再利用する場合、または追加レコードに対応するために行を追加するなどの調整が必要な場合は、「マクロの記録」をクリックした直後(キー操作を記録する前)に「相対参照」ボタンをクリックしてください。詳細な手順については、Excelマクロのヒントに関する記事をご覧ください。
2. 方向キーで特定のVBAコードを使用する
スプレッドシート内を移動するには、必ず方向キーを使用してください。Excelでは、Home、End、Page Up、Page Down、そして4つの矢印キー(上、下、右、左)が方向キーとして使用できます。Shift、Alt、Ctrlキーと組み合わせることで、マクロや作業中にスプレッドシート全体でカーソルを素早く移動するための様々なオプションを利用できます。
方向キー(ショートカットなど)は、ここで定義されているとおりに正確に入力する必要があります。そうでないとマクロは失敗します。例えば、ダッシュキーとプラスキーは互換性がありません。指示でダッシュキー(例:End-Down)が指定されている場合は、まずEndキーを押してから離し、次に下矢印キーを押すことを意味します。指示でプラス記号(Ctrl+Home)が指定されている場合は、Ctrlキーを押して押したまま、Homeキーを押してから両方のキーを離すことを意味します。
マクロコードはVisual Basic for Applications (VBA) エディターに表示され、「開発」タブの「コード」グループからアクセスできます。「マクロ」 > 「編集」または「マクロ」 > 「ステップイン」を選択します。Excelが自動的に生成するVBAコードは以下のようになります。

Excel が VBA エディターで書き出すマクロの Visual Basic コードのサンプル
マクロをたくさん書く予定なら、少なくともVBAエディタでマクロを表示して、記録したコマンドがVisual Basicでどのように記述されるかを確認することをお勧めします。簡単な調整であれば、プログラマーである必要はありません。
3. 柔軟なマクロを作成する
方向キーを使って柔軟なマクロを記録します。データは常にセルA1(ホームポジション)から開始されます。マクロを正確に実行するために、マクロはCtrl+Homeキーで開始する必要があります。
この例では、TJは毎年恒例のモノポリートーナメントで、7日間で1日6ゲーム、つまり42ゲーム/勝者について、勝者の勝ち負けを追跡する必要があります。勝者1人につき、マクロを含むスプレッドシート(PERSONAL.XLSB!ファイルに保存されています)を1つ作成し、そのシートを(同じワークブックに)41回コピーするだけで済みます。勝者ごとに支払い回数と回収回数を変更すれば、タスクは完了です。
a. 現在のスプレッドシートのワークシート タブを右クリックします。
b. ドロップダウンリストから、「シートの移動またはコピー」を選択します。
c. [選択したシートをブックに移動] ダイアログ ボックスで、スプレッドシート リストから [(末尾に移動)] を選択し、[コピーを作成] ボックスをオンにして、[OK]をクリックします。
d. 最初の元のスプレッドシートのコピーが 41 個できるまで、このプロセスを繰り返します。

マクロを記録した後、スプレッドシートを41回コピーします
4. 固定値/データを事前に入力する
上記の例では、物件ごとに支払われた家賃の総額を計算し、次に物件ごとに徴収された家賃の総額を計算します。次に、その差額を計算し、損益合計を算出します。この例では、カーソルを操作して範囲やセルを選択したり、数式を入力したりする方法を示しています。
a. 一意のデータまたは変化するデータを持つ列/フィールドは2つだけです。列Aは物件名、列Bは家賃です。どちらも固定値です。残りの列は数式または新しいデータです。列Aと列Bの情報は事前に入力してください。
b. 最初のゲームの勝者はKCです。彼女が各物件に対して支払った金額をC列に、受け取った金額をE列に入力します。これらの数値を計算するマクロを記録します。
5. 方向キーで移動する
a. マクロの記録:Ctrl+Home、右矢印キーを3回押します。数式:=SUM(B1*C1)。ただし、数式列「D: 支払済み家賃合計」と「F: 回収済み家賃合計」はどちらも列Bの家賃金額を使用しているため、まず数式を修正する必要があります。数式を再入力するよりもコピーする方が簡単なので、絶対/相対参照機能(F4)を使用して、この数式のB(絶対値)をハードコードし、コピーしても変更されないようにしておきます。
数式:セルD1に「=SUM(B1 [F4キーを3回押す] *C1)」と入力し、Enterキーを押します。数式は次のようになります: =SUM($B1*C1)。Enterキーを押しながら↑キーを押します。
なぜ上矢印キーなのでしょうか?それは、Enter キーを押すとカーソルが 1 度下 (D1 から D2) に移動し、D1 から数式をコピーする必要があるためです。

F4キーを使用して数式の一部を絶対値化し、合計を計算します
b. 数式をコピー:カーソル位置はD1です。Ctrl+C(コピー)、左矢印キー、End-Downキー、右矢印キー、Shift+End-Up-Downキー、Enterキーを押します。うわー!これは紛らわしいですね。これは文字列全体にわたってShiftキーを押し続けるという意味です。つまり、Shiftキーを押したままEndキーを押して放し、上矢印キーを押して放し、下矢印キーを押して放し、Shiftキーを放すということです。Shiftキーを押すとハイライトが保持され、範囲が選択されます。Enterキーを押すと選択が確定し、数式がコピーされます。範囲はまだハイライトされているので、End-Upキーを押して(カーソルをセルD1に移動します)。
c. 再度コピーします:(カーソルはD1にあります)Shift+End-Down、Ctrl+C、右2、Enter、End-Upを押します。数式がコピーされ、カーソルはセルF1に移動します。
d. 差を計算します。右矢印キーを押し、数式「=SUM(F1-D1) [F1 マイナス D1]」を入力します。Enter キーを押します。もう一度、Ctrl+C、左矢印キー、End キー、下矢印キー、右矢印キー、Shift+End キー、上矢印キー、下矢印キー、Enter キー、下矢印キーを押します。
注: このサンプルでは、簡潔さと簡潔さのために数式をハードコードしています。スプレッドシートが完全に動的な場合は、数式をハードコードするのではなく、以下に示すように範囲を「指定」することになります。
e. カーソル位置は、G列の計算式の下の最初の空白セルにあります。マクロに最適な「ポイント」方式を使用して、KCの総計を求めるためにこの列を追加します。=SUM( [等号合計の左括弧]、Up、End、Up、Shift+End+Down、Enterと入力します。総計が計算され、マクロが終了します。