メインコンテンツへスキップ
  1. NAEの仕事効率化ノート/
  2. 生産性アップ/

Excelで表の最終行列をe埋めする面倒なお作法を自動化するVBAマクロ

·1 分
目次

「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

以上です。短いですね!

やっていることは単純で、

  1. 使われている範囲を検知
  2. その外周(右と下)のセルをeで埋める

だけです。

マクロの使い方
#

マクロを使うために1つだけ、前準備が必要です。

使われている範囲を正しく検知するため、表の末尾のセルになにか入力しておいてください。

末尾セルに何か入力しておく

そのうえで上記マクロを実行すると、A1セルから最終セルまでの範囲を囲むようにe埋めされます。

e埋めマクロ実行後

わりとスカスカでガタガタの表でもデータの外周部分を検知することもありますが、動作が安定しないのでおすすめしません。

スカスカでガタガタのExcel表

なお、上記VBAコードを個人用のアドイン(*.xlam)に放り込んでおくと、ほかのファイルでも使いまわせて便利です。

参考: アドインを追加または削除する – Excel

リボンにボタンを追加するとクリック一発で呼び出せるようになります。

参考: Office でリボンをカスタマイズする – Office サポート

注意事項
#

特にありません。

が、強いて言うならVBAの実行はCrtl+zでUndoできない点だけご承知おきください。

まとめ:面倒なお作法は自動化してしまえ
#

以上、Excelで表の最終行列をe埋めする面倒なお作法を自動化するVBAマクロのご紹介でした。

短いソースコードを書くだけで10秒かかった作業を1秒足らず(ボタンを押すだけ)に短縮できるんですからVBAはいいですね。

付加価値の高い仕事に集中できるよう、定型作業はどんどん仕組み化しちゃいましょう!

/macros-for-excel-habits/

NAE
著者
NAE
IT戦略が専門の外資コンサル。「こうしたほうが早くない?」が口癖の効率化マニア。目指す人物像は三国志の左慈仙人。詳しいプロフィールはこちら

関連記事