こんにちわ。
Excelを使う仕事で、住所ごとに都道府県IDを振らないといけないことが多く、ずっと手動でやっていましたが、意を決してようやくマクロを作りました。
あとで微調整の方法も書きますが、ひとまずの仕様は以下です。
- 1行目はタイトル行なので無視
- D列の先頭の数文字で判定し、C列に都道府県ID(1~47)を入力
- D列の先頭が都道府県名でない場合、C列はカラのまま無視
都道府県IDは、北海道~~という住所なら1、東京都~~という住所なら13、というやつです。
マクロについて
初歩的なおさらいですが、マクロとはExcelの操作を自動化してくれるプログラムです。人間がやるのと違って、コンピュータがやってくれるので、処理は格段に速いし100%正確です。決まりきった操作はマクロを使って楽しましょう!
それでは手順です。
下準備:Excelでマクロを有効にする
もうマクロを使っている人は飛ばしてください。
マクロを使うには、Excelの上部メニュータブに「開発」というものを表示させる必要があります。デフォルトでは「開発」タブは表示されていません。
Office社公式の手順です。
Office アプリケーションで [開発] タブを表示する
1.[ファイル] タブの [リボンのユーザー設定]> に移動します。
2.[リボンのユーザー設定] および [メイン タブ] の下の [開発] チェック ボックスをオンにします。
出典:[開発] タブを表示する – Office サポート
このあたりは環境によってだいぶ見た目は違うと思いますが、私が使っているOffice2016での手順を書いておきますと、
上部メニュー「ファイル」>左下の「オプション」>「リボンのユーザー設定」の「開発」にチェックを入れて保存、でOKです。
手順1:個人用マクロブックに「都道府県コード挿入マクロ」を保存する
通常、マクロはExcelブック(ファイル)ごとに保存されるので、そのブックを開いていないと使用できません。Excel起動中いつでも使えるようにするには、「個人用マクロブック(PERSONAL.XLSB)」というブックにマクロを保存する必要があります。
個人用マクロブックは保存場所やファイル名に規定があり、1から新規作成するのが面倒なので、原始的なやり方ですが手動でマクロを記録して新規作成します。
手順1-1:操作を記録して空のマクロを作成
上部メニュー「開発」>「マクロの記録」で開くウィンドウに、マクロ名を「InsertPrefCode」等と入力し、マクロの保存先を「個人用マクロ ブック」にして「OK」で、処理(動作)の記録がスタートします。
その後、何もせずに、上部メニュー「開発」>「記録終了」をクリックします。
操作を記録開始して、終了した感じです。
手順1-2:作成したマクロを編集して保存
今保存したマクロを編集します。
上部メニュー「開発」>「マクロ」でウィンドウを開くと、「PERSONAL.XLSB!InsertPrefCode」というマクロが保存されているので、中身を「編集」して完成させます。(PERSONAL.XLSBというファイルにあるInsertPrefCodeというマクロという意味ですね。)
PERSONAL.XLSBファイルを開く
ここで、「表示されていないブックのマクロは編集できません」とエラーが出ます…(マクロのあるPERSONAL.XLSBというファイルを表示させてくれ!という意味です。使い勝手悪いですよね。)
上部メニュー「表示」>「再表示」から、「PERSONAL.XLSB」を選択すると表示できます。
ちなみに、今後もマクロを使う際は「PERSONAL.XLSB」を開いていないと使えませんが、Excelを立ち上げた瞬間にこのファイルは勝手に開きます。
紆余曲折のあと、「PERSONAL.XLSB!InsertPrefCode」を開くと、中身の無いマクロ関数(プログラム文章)が保存されていることがわかります。
都道府県コード挿入マクロの内容
この部分に、以下の「都道府県コード挿入マクロ」の内容をコピペして、上書き保存します。
最初と最後の2行だけは、元からある部分ですね。
Sub InsertPrefCode() Dim i For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Dim Address As String Address = Cells(i, 4) Dim Prefid As String Select Case True Case Address Like "北海道*" Prefid = "1" Case Address Like "青森県*" Prefid = "2" Case Address Like "岩手県*" Prefid = "3" Case Address Like "宮城県*" Prefid = "4" Case Address Like "秋田県*" Prefid = "5" Case Address Like "山形県*" Prefid = "6" Case Address Like "福島県*" Prefid = "7" Case Address Like "茨城県*" Prefid = "8" Case Address Like "栃木県*" Prefid = "9" Case Address Like "群馬県*" Prefid = "10" Case Address Like "埼玉県*" Prefid = "11" Case Address Like "千葉県*" Prefid = "12" Case Address Like "東京都*" Prefid = "13" Case Address Like "神奈川県*" Prefid = "14" Case Address Like "新潟県*" Prefid = "15" Case Address Like "富山県*" Prefid = "16" Case Address Like "石川県*" Prefid = "17" Case Address Like "福井県*" Prefid = "18" Case Address Like "山梨県*" Prefid = "19" Case Address Like "長野県*" Prefid = "20" Case Address Like "岐阜県*" Prefid = "21" Case Address Like "静岡県*" Prefid = "22" Case Address Like "愛知県*" Prefid = "23" Case Address Like "三重県*" Prefid = "24" Case Address Like "滋賀県*" Prefid = "25" Case Address Like "京都府*" Prefid = "26" Case Address Like "大阪府*" Prefid = "27" Case Address Like "兵庫県*" Prefid = "28" Case Address Like "奈良県*" Prefid = "29" Case Address Like "和歌山県*" Prefid = "30" Case Address Like "鳥取県*" Prefid = "31" Case Address Like "島根県*" Prefid = "32" Case Address Like "岡山県*" Prefid = "33" Case Address Like "広島県*" Prefid = "34" Case Address Like "山口県*" Prefid = "35" Case Address Like "徳島県*" Prefid = "36" Case Address Like "香川県*" Prefid = "37" Case Address Like "愛媛県*" Prefid = "38" Case Address Like "高知県*" Prefid = "39" Case Address Like "福岡県*" Prefid = "40" Case Address Like "佐賀県*" Prefid = "41" Case Address Like "長崎県*" Prefid = "42" Case Address Like "熊本県*" Prefid = "43" Case Address Like "大分県*" Prefid = "44" Case Address Like "宮崎県*" Prefid = "45" Case Address Like "鹿児島県*" Prefid = "46" Case Address Like "沖縄県*" Prefid = "47" Case Else Prefid = "" End Select Cells(i, 3) = Prefid Next End Sub
手順2:都道府県コードを追記したいExcelブックでマクロを実行する
それでは使ってみます。
先にも書きましたが、私専用の仕様なので、ひとまず以下の動作です。
- 1行目はタイトル行なので無視
- D列の先頭の数文字で判定し、C列に都道府県ID(1~47)を入力
- D列の先頭が都道府県名でない場合、C列はカラのまま無視
都道府県コードを追記したいExcelブックを開き、上部メニュー「開発」>「マクロ」から、「PERSONAL.XLSB!InsertPrefCode」を選んで「実行」します。
一瞬でC列を埋めてくれたかと思います。やった!
マクロの仕様を微調整する方法
それでは、仕様の微調整の方法です。
繰り返し処理をスタートする行数を変えたい
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
上記の2の部分を変更してください。
1行目から処理をしたい場合(タイトル行がない場合)は、1にしましょう。
住所が入力されているセルの列番号を変えたい
Address = Cells(i, 4)
上記の4の部分を変更してください。
私の場合、D列が住所なので4番目になっています。E列なら5、F列なら6にしましょう。
都道府県コードを挿入するセルの列番号を変えたい
Cells(i, 3) = Prefid
プログラム文の末にある、上記の3の部分を変更してください。
私の場合、C列に都道府県コードを入力させたいので3番目になっています。
マクロ編集時の注意
数字部分の書き換えをする時、必ず半角数字で入力してくださいね。Excelマクロとは言えプログラムコードなので、全角厳禁です。知らないうちに全角スペースが入ってしまってエラーになるのも、陥りやすいミスです。
それと、PHPやJavaScriptと違って、文末に「;」などを追加してしまわないように注意しましょう!
以上、勝手にいろいろ改変して活用頂ければと思います。
それではまた!