Excelで郵便番号を最新の住所へ一括変換したいときはないでしょうか。
けど、そんな中で悩むことは、
・VLOOKUP関数を使わずに郵便番号を最新の住所へ一括変換したいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VLOOKUP関数を使わずに郵便番号を最新の住所へ一括変換する方法
についてまとめます!
もくじ
Excelで郵便番号を最新の住所へ一括変換するイメージ
Excelで郵便番号を最新の住所へ一括変換するイメージについて説明をします。
まずは最新の郵便番号データを郵便局サイトからダウンロードします。
次に郵便番号データをExcelへインポートし、
関数を設定すると、
関数を入力したセルに住所が表示されます!
大量の郵便番号データから住所を調べるときに便利ですね!
それでは早速試してみましょう。
Excelで郵便番号を最新の住所へ一括変換する方法
Excelで郵便番号を最新の住所へ一括変換するについて説明をします。
EXTAN_YUJU関数について
使う関数はEXTAN_YUJU関数となります。
EXTAN_YUJU関数はエク短オリジナル関数で、郵便番号を意図した文字列を指定すると住所を返す関数です。
構文と設定パラメータ
EXTAN_YUJU関数の構文と設定パラメータは以下の通りです。
関数名 | EXTAN_YUJU |
---|---|
構文 | EXTAN_YUJU (郵便番号) |
設定パラメータ | 郵便番号(String型): 必須。 郵便番号を示す文字列を指定します。”-“や” “が入っていても問題ありません。 |
郵便番号データを郵便局サイトからダウンロードする
最新の郵便番号データを郵便局サイトからダウンロードします。
郵便番号データダウンロードページ
https://www.post.japanpost.jp/zipcode/dl/oogaki-zip.html
「全国一括」リンクをクリックします。
https://www.post.japanpost.jp/zipcode/dl/oogaki/zip/ken_all.zip
ダウンロードが完了したら、ZIPファイルを解凍し、CSVファイルを任意の場所に格納しましょう。
CSVをExcelへ取り込む
ダウンロードしたCSVファイルのデータをExcelへ取り込みましょう。
「データ」タブをクリックし、「テキストまたはCSVから」ボタンをクリックし、
ダウンロードしたCSVファイルを選択します。
「KEN_ALL」シート名で取り込められたら取り込み完成です。
サンプルの郵便番号を入力する
まずはサンプルの郵便番号を入力していきます。
入力する値は半角の数字を入力します。
またハイフンや半角スペースが含まれても関数側で除外しますので、問題ありません。
オリジナル関数のVBAコードを実装する
オリジナル関数が含まれるVBAコードをExcelへ実装します。
Function EXTAN_YUJU(rngCell As Range) As String
Dim arrYuData As Variant
Dim strCellValue As String
Dim strJusho As String
Dim lngEndrow As Long
Dim i As Long
'郵便番号リストを対象にします。
With ThisWorkbook.Worksheets("KEN_ALL")
'入力値をクレンジングします。
strCellValue = Replace(rngCell.Value, "-", "")
strCellValue = Replace(strCellValue, " ", "")
strCellValue = Replace(strCellValue, "―", "")
'郵便番号リストの最終行を取得します。
lngEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
'郵便番号リストを配列に変換します。
arrYuData = .Range(.Cells(1, 1), .Cells(lngEndrow, 9))
'2行目から最終行まで処理を繰り返します。
For i = 2 To lngEndrow
'入力値の郵便番号とリストの郵便番号が合致していたら処理します。
If strCellValue = arrYuData(i, 3) Then
'郵便番号リストの住所を文字結合して変数に代入します。
strJusho = arrYuData(i, 7) & arrYuData(i, 8) & arrYuData(i, 9)
'出力値をクレンジングします。
strJusho = Replace(strJusho, "以下に掲載がない場合", "")
'郵便番号リストの住所を戻り値に設定します。
EXTAN_YUJU = strJusho
'繰り返し処理を中断します。
Exit For
End If
Next i
End With
End Function
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
EXTAN_YUJU関数を入力する
EXTAN_YUJU関数を入力していきましょう。
B2セルに以下を入力します。
=EXTAN_YUJU(A2)
はい、住所が出力されましたね!
最後のセルまでドラッグしましょう。
はい、他の郵便番号も住所が出力されましたね!!
VBAの説明
VBAについて説明をします。
Withで郵便番号リストシートを対象にします。シート名は”KEN_ALL”に固定するようお願いします。
With ThisWorkbook.Worksheets(“KEN_ALL”)
入力値をクレンジングします。
strCellValue = Replace(rngCell.Value, "-", "")
strCellValue = Replace(strCellValue, " ", "")
strCellValue = Replace(strCellValue, "―", "")
郵便番号リストの最終行を取得します。
lngEndrow = .Cells(Rows.Count, 1).End(xlUp).Row
郵便番号リストを配列に変換します。
arrYuData = .Range(.Cells(1, 1), .Cells(lngEndrow, 9))
2行目から最終行まで処理を繰り返します。
For i = 2 To lngEndrow
入力値の郵便番号とリストの郵便番号が合致していたら処理します。
If strCellValue = arrYuData(i, 3) Then
郵便番号リストの住所を文字結合して変数に代入します。
strJusho = arrYuData(i, 7) & arrYuData(i, 8) & arrYuData(i, 9)
出力値をクレンジングします。
strJusho = Replace(strJusho, "以下に掲載がない場合", "")
もしクレンジングしない場合は以下のようになる場合があります。
原因はデータに不要な文字列が含まれているためです。
郵便番号リストの住所を戻り値に設定します。
EXTAN_YUJU = strJusho
繰り返し処理を中断します。
Exit For
郵便番号データを更新する
郵便番号と住所は日々更新されています。
最新の状態にするためには同じく郵便局サイトから郵便番号データをダウンロードしてExcel側へ取り込んでいきます。
「全国一括」リンクをクリックします。
https://www.post.japanpost.jp/zipcode/dl/oogaki/zip/ken_all.zip
ダウンロードが完了したら、ZIPファイルを解凍し、CSVファイルを前回と同じ場所へ格納します。
次にExcel側のデータタブをクリックし、すべて更新ボタンをクリックします。
下段のステータスバーが消えれば顔料となります。
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
さいごに
いかがでしょうか。
今回は、
・VLOOKUP関数を使わずに郵便番号を最新の住所へ一括変換する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す