「Excelで表を作るときは末尾の行・列を”e”で埋めるようにしましょう」
というお作法を新入社員時代の上司に教わったNAEです。
これ、正直面倒くさくないですか?
毎回手動でやるのもバカバカしいので、マクロで自動化しました。
やり方を共有します。
なぜ”e埋め”するのか?
Excelでデータをまとめていると時たま、末尾の行・列まで移動したくなることがあります。
表がデータでみっちり埋まっていればショートカットキーのCtrl+→やCtrl+↓で一発で移動可能です。
しかしデータがスカスカの場合、この方法は聞きません。途中の空白セルでトラップされるため、ワンタッチで飛べないんです。
この不便を解消すべく、あらかじめ末尾の行と列をeで埋めておこう、というのがe埋めの趣旨です。
(他にも「ここでデータは終わりだよ」を示すマークとしても使われることがあります)
手動での”e埋め”は面倒くさい
しかしこのe埋め、新しいシートを作るたびに毎回やるのは面倒です。
オートフィルのショートカットキー(Ctrl+dやCtrl+r)を使ってどんなに頑張っても10秒はかかります。
とはいえ、たかが10秒、されど10秒。積もり積もれば大きな違いにつながるもの。
どうにかして短縮したいですし、そもそも”e埋め”自体はあまり価値を生まないで自動化してしまいたいですよね。
面倒な”e埋め”を一瞬で終わらせるマクロ
そう思った昔のぼくがマクロを作っていました。
こちらです。
Sub 末尾のe埋め() Dim lastRowIdx, lastColIdx As Integer lastRowIdx = ActiveSheet.UsedRange.Rows.Count + 1 lastColIdx = ActiveSheet.UsedRange.Columns.Count + 1 Range(Cells(1, lastColIdx), Cells(lastRowIdx, lastColIdx)).Value = "e" Range(Cells(lastRowIdx, 1), Cells(lastRowIdx, lastColIdx)).Value = "e" End Sub
以上です。短いですね!
やっていることは単純で、
- 使われている範囲を検知
- その外周(右と下)のセルをeで埋める
だけです。
マクロの使い方
マクロを使うために1つだけ、前準備が必要です。
使われている範囲を正しく検知するため、表の末尾のセルになにか入力しておいてください。
そのうえで上記マクロを実行すると、A1セルから最終セルまでの範囲を囲むように”e埋め”されます。
わりとスカスカでガタガタの表でもデータの外周部分を検知することもありますが、動作が安定しないのでおすすめしません。
なお、上記VBAコードを個人用のアドイン(*.xlam)に放り込んでおくと、ほかのファイルでも使いまわせて便利です。
リボンにボタンを追加するとクリック一発で呼び出せるようになります。
参考 Office でリボンをカスタマイズする – Office サポート
注意事項
特にありません。
が、強いて言うならVBAの実行はCrtl+zでUndoできない点だけご承知おきください。
まとめ:面倒なお作法は自動化してしまえ
以上、Excelで表の最終行列をe埋めする面倒なお作法を自動化するVBAマクロのご紹介でした。
短いソースコードを書くだけで10秒かかった作業を1秒足らず(ボタンを押すだけ)に短縮できるんですからVBAはいいですね。
付加価値の高い仕事に集中できるよう、定型作業はどんどん仕組み化しちゃいましょう!
https://work.naenote.net/entry/macros-for-excel-habits
コメント