住所を「都道府県/市区町村/それ以降」に自動で分割。政令市の区や郡にも対応。エクセルでのやり方(フラッシュフィル・関数)も解説。登録不要・端末内処理。
住所のリストを「都道府県/市区町村/番地以降」の列に自動で分割するツールです。先頭から都道府県を判定し、続く市区町村(政令市の区、郡+町村にも対応)を切り出して、残りを番地以降とします。顧客名簿やリストを都道府県別・エリア別に集計したいときに便利です。登録不要・無料で、データはあなたの端末内だけで処理され、サーバーに送信されません。
Excel上で完結させたい場合は次の3つです。とにかく速いのは①のフラッシュフィル、件数が多く正確さが要るなら②。上のツールは「関数を書かずに、貼り付けて結果をコピーしたい」ときに使ってください。
推測に頼るため、住所の書き方がバラバラだと誤りが混ざります。実行後は必ず目視で確認してください。
都道府県は文字数が3文字か4文字かのどちらかです(4文字は神奈川県・和歌山県・鹿児島県の3つだけ)。この性質を使います。
=LEFT(A2,IF(MID(A2,4,1)="県",4,3))=SUBSTITUTE(A2,B2,"")=LEFT(C2,MIN(IFERROR(FIND({"市","区","町","村"},C2),LEN(C2)+1)))=SUBSTITUTE(C2,D2,"")市区町村の式は配列を使っています。Microsoft 365・Excel 2021以降はそのままEnterで確定できますが、Excel 2019以前は Ctrl+Shift+Enter で確定してください。
市区町村は例外が多い部分です。政令指定都市(例:横浜市青葉区)は「市」で切れるため区が番地側に残ります。郡(例:〜郡〜町)や、名前の途中に「市」「町」「村」を含む自治体(四日市市・野々市市・廿日市市・十日町市・東村山市など)も取りこぼします。上のツールはこれらに対応しています。
Microsoft 365 の Excel では、正規表現で文字を取り出す REGEXEXTRACT関数が使えるようになりました。②の式より例外に強く、政令指定都市の区(横浜市青葉区)や郡(北足立郡伊奈町)までまとめて取り出せます。
=IFERROR(REGEXEXTRACT(A2,"^(東京都|北海道|(京都|大阪)府|.{2,3}県)"),"")=SUBSTITUTE(A2,B2,"")=IFERROR(REGEXEXTRACT(C2,"^(.+?郡.+?[町村]|.+?市.+?区|.+?[市区町村])"),"")=SUBSTITUTE(C2,D2,"")都道府県が書かれていない住所(「千代田区丸の内…」)は、都道府県の列が空欄になり、市区町村から正しく分かれます。
REGEXEXTRACT は Excel for Microsoft 365 の関数です。Excel 2021・2019 以前にはないため、②の式か上のツールを使ってください。この式でも、名前の途中に「市」「町」「村」を含む自治体(四日市市・東村山市・十日町市など)は途中で切れます(例:「東村山市」→「東村」)。
住所が「東京都 千代田区 …」のようにスペースで区切られている場合のみ、[データ]→「区切り位置」→「カンマやタブなどの区切り文字」→「スペース」で分割できます。スペースがない住所には使えません。
「都道府県・市区町村」までは上の方法で分かれますが、残った「1-2-3ABCビル5階」から番地と建物名を分けるのは別の難しさがあります。理由は単純で、番地と建物名の間に区切り文字が無いことが多いからです。スペースが入っていれば[データ]→「区切り位置」で一発ですが、入っていないデータのほうが多く見かけます。
考え方は「番地に使われる文字が終わったところで切る」。 番地に出てくるのは数字・ハイフン・「丁目」「番」「地」「号」だけなので、それ以外の文字が最初に現れた位置が建物名の先頭になります。
1-2-3)ABCビル5階 と入力して Ctrl+E建物名の付き方がバラバラでも、例を数件与えれば追従します。ただし推測なので、実行後は必ず目視で確認してください。
番地以降が E2 に入っているとします。
=LET(s,E2,i,SEQUENCE(LEN(s)),c,MID(s,i,1),ok,ISNUMBER(--c)+ISNUMBER(FIND(c,"--ー‐−丁目番地号の")),p,IFERROR(MATCH(0,ok,0),LEN(s)+1),LEFT(s,p-1))=LET(s,E2,i,SEQUENCE(LEN(s)),c,MID(s,i,1),ok,ISNUMBER(--c)+ISNUMBER(FIND(c,"--ー‐−丁目番地号の")),p,IFERROR(MATCH(0,ok,0),LEN(s)+1),MID(s,p,LEN(s)))LET と SEQUENCE を使うため、Excel 2019以前では動きません。その場合は方法Aを使ってください。
実際の結果:
| 番地以降(E列) | 番地(F列) | 建物名(G列) |
|---|---|---|
| 1-2-3ABCビル5階 | 1-2-3 | ABCビル5階 |
| 1丁目2番3号ABCビル5階 | 1丁目2番3号 | ABCビル5階 |
| 12-3-4グランドメゾン301 | 12-3-4 | グランドメゾン301 |
| 3丁目1番地サンハイツ101 | 3丁目1番地 | サンハイツ101 |
| 1-2-3(建物名なし) | 1-2-3 | (空欄) |
うまくいかないケースも正直に書いておきます。 1-2-3号室 のように建物名の側に「号」「番」などの文字が入ると、そこまでを番地と判定してしまいます(1-2-3号/室)。また番地以降が漢数字で始まる住所も分けられません。件数が多い場合は、分割後に建物名の列を並べ替えて、短い値・不自然な値だけ目で確認するのが早いです。
スプレッドシートにはフラッシュフィルがありません。代わりに関数だけで完結します。上のツールの結果をそのまま貼り付けても構いません。
「東京都 千代田区 丸の内1-1-1」のようにスペースで区切られているなら、これ1本で終わります。
=SPLIT(A2, " ")(半角スペース区切り)=SPLIT(A2, " ")(全角スペース区切り)結果は右の列に自動で広がります。右隣の列にデータがあると #REF! になるので、空けておいてください。
=LEFT(A2,IF(MID(A2,4,1)="県",4,3))=SUBSTITUTE(A2,B2,"")=REGEXEXTRACT(C2,"^.+?[市区町村]")=SUBSTITUTE(C2,D2,"")正規表現版も Excel の式と同じ弱点を持ちます。政令指定都市(横浜市青葉区)は「市」で切れて区が番地側に残り、四日市市・野々市市・廿日市市・十日町市などは途中の「市」で切れます。REGEXEXTRACT は該当なしのとき #N/A を返すので、=IFERROR(数式,"") で包むと表が見やすくなります。
「千代田区丸の内1-1-1」のように都道府県から始まっていないデータは珍しくありません。上の都道府県の式は先頭3〜4文字を機械的に切るだけなので、この形だと「千代田区」を都道府県として切り出してしまいます。
先に都道府県で始まっているかどうかを判定してから分けてください。
=IF(OR(MID(A2,3,1)={"都","道","府","県"},MID(A2,4,1)="県"),"あり","なし")=IF(REGEXMATCH(A2,"^.{2,3}[都道府県]"),"あり","なし")「なし」の行だけを抜き出して、市区町村から分ける式を別に当てるのが確実です。なお「京都府」で始まる住所は誤判定しやすいので注意してください(3文字目が「都」なので「京都」+「府」ではなく「京都府」で切れるか、式によって結果が変わります)。上のツールはこの区別に対応しています。
「1−2−3」と「1-2-3」が同じ列に混ざっていると、分割も並べ替えも重複チェックも狂います。分割する前に統一してください。
=ASC(A2)=JIS(A2)ハイフンは見た目が似た文字が複数あります(- 半角ハイフン/− 全角マイナス/ー 長音/‐ ハイフン)。ASC では変換されないものもあるので、=SUBSTITUTE(SUBSTITUTE(ASC(A2),"ー","-"),"−","-") のように個別に置換すると確実です。上のツールは貼り付けた時点でこの正規化を行います。
住所が1列にまとまった名簿を、都道府県・市区町村で分けてエリア別の件数を出したいときに。
発送エリアごとの仕分けや、地域別の分析の前処理として使えます。
データはどこかに送信されますか?
いいえ。分割処理はすべてあなたのブラウザの中で行われ、入力した住所が外部のサーバーに送られることはありません。
すべての住所が正確に分割されますか?
自動判定のため、一部の住所は手直しが必要な場合があります。判定できなかった箇所は黄色のセルで表示されるので、その部分だけ確認・修正してください。
エクセルで住所から都道府県だけを取り出す関数は?
=LEFT(A2,IF(MID(A2,4,1)="県",4,3)) です。4文字の都道府県は神奈川県・和歌山県・鹿児島県だけなので、4文字目が「県」かどうかで3文字か4文字かを決めます。都道府県が書かれていない住所が混ざる場合は、Microsoft 365 の =IFERROR(REGEXEXTRACT(A2,"^(東京都|北海道|(京都|大阪)府|.{2,3}県)"),"") が確実です(解説)。
市区町村だけを取り出す関数は?
都道府県を除いた文字列(C2)から =LEFT(C2,MIN(IFERROR(FIND({"市","区","町","村"},C2),LEN(C2)+1))) で取り出せます。政令指定都市の区や郡まで含めたい場合は、REGEXEXTRACT の式を使ってください。
番地と建物名も分けられますか?
このツールは「番地以降」を1つの列にまとめて出力します。そこから番地と建物名に分ける手順はこちらで解説しています(フラッシュフィル/数式の2通り・コピペで使える式つき)。区切り文字が無い住所でも分けられます。
「1-2-3ABCビル5階」のように区切りが無くても分けられますか?
分けられます。番地に使われるのは数字・ハイフン・「丁目」「番」「地」「号」だけなので、それ以外の文字が最初に現れた位置で切ります。④ 番地と建物名を分けるの数式をそのままお使いください。
数万件あります。目視で確認しきれません。
件数が多い場合は、分割後に建物名の列を並べ替えて、極端に短い値・数字だけの値を先に確認すると効率的です。それでも手に負えない量・精度が要る場合は、下記の代行をご相談ください。
個人事業主向けの無料Notionテンプレートを配布しています。売上・経費を1年を通して貯めておけて、入金額(売上−手数料−送料)や経費の家事按分を自動計算します。確定申告チェックリストも付いていて、複製してすぐ使えます。
▶ 無料Notionテンプレートを見る(売上・経費を自動集計)→
※ 社内の名簿整理や宛名印刷のために来られた方には関係のない内容です。読み飛ばしてください。
このツールは「貼り付けて分ける」までを想定しています。数万件ある、番地とビル名まで分けたい、表記ゆれや重複も一緒に片づけたい——といったときは、ファイルをお預かりして整えてお返しします。手作業ではなく専用ツールで処理するので、行数が増えても料金は変わりません(3,000円〜・納品2日)。