著書「外資系コンサルは無理難題をこう解決します」発売中
PR

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

e埋め自動化マクロ 作業効率

「Excelで表を作るときは末尾の行・列を”e”で埋めるようにしましょう」

というお作法を新入社員時代の上司に教わったNAEです。

これ、正直面倒くさくないですか?

毎回手動でやるのもバカバカしいので、マクロで自動化しました。

やり方を共有します。

スポンサーリンク

なぜ”e埋め”するのか?

Excelでデータをまとめていると時たま、末尾の行・列まで移動したくなることがあります。

表がデータでみっちり埋まっていればショートカットキーのCtrl+→Ctrl+↓で一発で移動可能です。

しかしデータがスカスカの場合、この方法は聞きません。途中の空白セルでトラップされるため、ワンタッチで飛べないんです。

この不便を解消すべく、あらかじめ末尾の行と列をeで埋めておこう、というのがe埋めの趣旨です。

(他にも「ここでデータは終わりだよ」を示すマークとしても使われることがあります)

手動での”e埋め”は面倒くさい

しかしこのe埋め、新しいシートを作るたびに毎回やるのは面倒です。

オートフィルのショートカットキー(Ctrl+dCtrl+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はいいですね。

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

https://work.naenote.net/entry/macros-for-excel-habits

コメント

コメント以外のご意見・ご要望、管理人へのご連絡などは、お問い合わせからどうぞ

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