Excel にはマクロ機能といって Visual Basic を使ってプログラミングができる機能があります。ちょっとでも自分でプログラミングが出来ると作業の時短が出来て便利なんですよね。
今回は、何万行とある Excel 若しくは CSV ファイルのセルの頭か最後に文章を追加したいケースについてお話します。全ての行のセルをマウスでカチカチして1行ずつ入力しますか?そんな事をしていたら陽が暮れてしまいますね。
マクロを使って一瞬で終わらせる方法を紹介します。
目次
マクロを使うために
デフォルトでは Visual Basic を使ってプログラミングする機能が隠されている場合もあります。上部タブに「開発」が無ければ隠されているので、設定画面で有効にする必要があります。
左上の「ファイル」タブからオプション画面を開きます。
Excel 2007の場合
基本設定に「開発」タブをリボンに表示するという項目があるのでチェックを入れます。
Excel 2010以降の場合
「リボンのユーザー設定」から開発のチェックマークを入れて OK を押して設定を完了します。
すると開発タブが現れますので、「Visual Basic」ボタンを押して編集画面を開きます。
Visual Basic エディタを開いても、最初は何もありません。左のプロジェクトウィンドウから「VBA Project」を右クリックして「挿入」→「標準モジュール」を選択する事でようやくマクロを書く事ができます。
マクロで全てのセルの頭か最後に文章を追加する方法
そんなに長いマクロではないのでまずソースをご覧ください。
Sub セル末尾文章追加() Dim i As Integer For i = 2 To Sheets(1).UsedRange.Rows.Count Sheets(1).Cells(i, 29).Value = Sheets(1).Cells(i, 29).Value & "追加したい文章" Next Msgbox("終了") End Sub
上のマクロは全ての29列目のセルの末尾に文章を追加するマクロです。29の部分を変えれば任意の列のセルに文章を追加する事ができます。
仕組みを簡単に説明すると、for文の繰り返し処理で29列目の2行目から最後の行まで文章を追加しています。処理が終わると「終了」という確認ウィンドウが出て知らせてくれます。
セルの頭に追加したい場合は以下のようにすればOKです。
Sub セル先頭文章追加() Dim i As Integer For i = 2 To Sheets(1).UsedRange.Rows.Count Sheets(1).Cells(i, 29).Value = "追加したい文章" & Sheets(1).Cells(i, 29).Value Next Msgbox("終了") End Sub
ポイント
- Sheets(1)は1番目のシートという意味
- Sheets(1).Cells(i, 29)の29を変えると好きな列に追加出来る
- UsedRange.Rows.Countは最後の行という意味
マクロの実行方法
開発タブの「マクロ」ボタンを押して該当のマクロを選択して実行します。
注意点は、マクロはアンドゥが効きません。マクロを実行する前に別名で保存してバックアップする事をお勧めします。
おわりに
マクロのプログラムを見ると、何だこれは!?ややこしい!と思われるかもしれませんが、基本がわかってくるとやりたい事を自分でマクロを組んで作業の時短が出来るので覚えておいて損はないですよ。まずはコピペからでも良いですし、上のマクロのカスタマイズから始めても良いかもしれません。
私は下記のサイトでお世話になりました。