Excel(エクセル)で住所から都道府県コードを自動挿入するマクロ

仕事ビジネス

こんにちわ。
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と違って、文末に「;」などを追加してしまわないように注意しましょう!

以上、勝手にいろいろ改変して活用頂ければと思います。
それではまた!