0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お盆休みは、Excelの道具の手入れをしています ── 郵便番号まわりが見違えた話

0
Posted at

はじめに

お盆休みは、毎日どこかへ出かける人と、家で何かを直している人に分かれると思います。私は後者です。

休みのあいだ、自分のアドインの手入れを続けています。会話するだけでマクロが直る道具を作って以来、直すこと自体が速くなったので、休みが来るたびに手入れの範囲が広がっていきます。実装で手を動かすのは AI(Claude)で、何を作るか決めるのと、実物を確かめるのは私です。

今回は近況の報告です。短めに、二つだけ書きます。管理フォームが増えたことと、郵便番号まわりを作り直したことです。

TL;DR

  • この休みで、アドインの管理フォームが一気に増えました。プリンタ、ユーザーフォーム自体、ワークシートの表示・非表示、フォントの一覧、PDF出力名──どれも「Excel の標準画面では管理しづらいもの」です
  • 主役は郵便番号です。自作の郵便番号データ(12万4513件)を、住所のセルから一瞬で引けるようになりました
  • 検索マクロは、4.51MB のデータブックを毎回開いて閉じる方式から、初回だけ読み込んでメモリに置く方式へ。二回目からはブックを開くことすらしません
  • 検索シートには**「全国+47都道府県」のコンボ**を付けました。県を選んだ瞬間、表も検索もその県だけになります
  • データの更新はボタン一発になりました。日本郵便の全国一括データ(2.04MB)を取得して、加工から書き込みまで全部やります。昔、県別に落として手で繋いでいた作業です
  • 表に住所が並んでいるなら、範囲を選んで一発で、左隣のセルに郵便番号を埋めることもできます

管理フォームが、道具箱の棚になってきた

前に、ショートカットキーの一覧管理フォームを作った話を書きました。

あれから同じ型で、管理フォームが増えています。プリンタの管理。ユーザーフォームそのものの管理(一覧・コード閲覧・出し入れ)。ワークシートの管理には非表示シートの一覧と切り替えを足しました。隠れているシートは Excel の標準画面だと右クリックで一枚ずつしか出せませんが、状態の列を持った一覧で選んで反転するだけになりました。

普段の一覧は、表示中のシートだけを出します。

ワークシート一覧・表示タブ

タブを「全シート」に切り替えると、隠れているものが状態つきで現れます。Sheet3 と Sheet4 が非表示、と一目で分かります。選んで下のボタンを押せば反転します。

ワークシート一覧・全シートタブ

共通しているのは、**「見えないものを一覧にして、見えるところで操作する」**という一点です。フォームを作るのは、会話で頼めば数分の作業になったので、「これも一覧で管理したい」と思った日のうちに棚が一段増えます。

郵便番号まわりを、作り直した

今回の主役です。

私は昔から、住所と郵便番号の対応表を Excel で持っています。日本郵便が公開しているデータを加工したもので、住所・郵便番号・ひらがなの読みが12万行並んでいる表です。検索欄に語を打ち込むと、その場で検索が走ります。機械が一件に決められれば即答え、決められなければ絞り込んだ一覧が出て、あとは人の目で選ぶ──という作りです。

この表自体は前から動いていました。今回やったのは三つです。

一つ目。県で絞れるようにした

検索欄の隣に**「全国+47都道府県」のコンボ**を付けました。県を選んだ瞬間に、表がその県だけになり、検索もその県の中だけで走ります。

仕掛けは単純です。この表の住所は必ず県名で始まるので、**「選んだ県名で始まる行だけを相手にする」**という条件を検索に一行足すだけで済みました。以前は「全国版」と「県内版」の二つのファイルを使い分けていましたが、これで一つに畳めました。

秋田県を選んで「山王」と打つと、こうなります。12万4513件のうち、候補は9件。

県で絞って検索

二つ目。データ更新をボタン一発にした

この対応表を作った当時は、日本郵便のサイトから県別の CSV を何回にも分けて落として、しかも長い町名だと一件が複数行に割れる仕様だったので、それを繋ぐ加工を手でやっていました。正直、二度とやりたくない作業でした。

今回調べ直したら、状況が変わっていました。**全国一括・1レコード1行・UTF-8 のデータ(2.04MB)が公式で配布されています。**分割も行割れも、もう存在しません。

なのでシートの右上に「更新」ボタンを付けました。押すと、取得→展開→住所の連結→読みのひらがな変換→表の書き換え→罫線まで全部やって、件数を報告してきます。実行したら 124,513件になりました(更新前は 124,236件。データは毎月更新されているので、この差の277件が「たまっていた分」です)。

三つ目。マクロの検索を、メモリ常駐にした

セルの住所から郵便番号を引くマクロは前からありました。ただ、作りが正直に言って重かった。4.51MB のデータブックを毎回開いて、検索して、閉じるという方式だったからです。

これを AI と直している途中で、私から注文を付けました。シートを開いて操作するのではなく、データを取り込んで、そちらで処理したほうが早いだろう、と。

作り直した結果はこうです。

  • 初回だけデータを読み込んで、メモリに置く(Excel を閉じるまで有効)
  • 二回目からは、データブックを開くことすらせずその場で答えが出る
  • データが更新されたら、ファイルの更新日時で気づいて勝手に読み直す

さらにもう一本、**「選択セルの左側に郵便番号を入力」**というマクロを足しました。表に住所が並んでいるとき、範囲を選んで実行すると、機械が一件に決められた行だけ左隣に番号が入ります。決められなかった行と空欄は黙って飛ばすので、流れが止まりません。

この検索ブックは、公開しました

作り直した全国郵便のブックは、GitHub にそのまま置きました。開いて B1 に打てば検索、C1 で県絞り、右上のボタンでデータ更新まで、この記事に書いたことがそのまま動きます。

事実と見立ての仕分け

事実は、ここまで書いたとおりです。件数とファイルサイズは手元で実測した数字で、時間は測っていないので書いていません。「一瞬」というのは、毎回のブックの開け閉めが消えたあとの、私の体感です。

見立てを一つだけ。この郵便番号の道具は、大元のデータを検分できる形(ただの表)で持っていることが効いていると思っています。検索も更新もマクロですが、データそのものは開けば見える12万行の表です。おかしいと思ったら目で見て、手で直せる。速くする改造を重ねても、この検分のしやすさだけは崩さないようにしています。

正直な線引き

  • 動作を確かめているのは、Windows 11・64bit Excel の私の環境一台です
  • 住所から番号を機械が決めるのは「一件に絞り込めたとき」だけです。書き方が揺れている住所や、番地の途中までしか無い住所は、絞り込んだ一覧を出して人の目に渡します。全自動をうたう道具ではありません
  • 郵便番号データは日本郵便の公開データです。毎月更新されるので、更新ボタンを押した日の鮮度がその表の鮮度です

おわりに

休みの前半だけで、棚が何段か増えて、郵便番号は見違えました。

道具の手入れは、掃除と似ています。やり始めると、隣の汚れが目に入る。

休みの残りも、たぶんそうやって過ぎていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?