こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel 住所分け市区郡

ここで教えて頂いた式なのですが
セルB1に
=IF(MID(A1,4,1)="県",LEFT(A1,4),LEFT(A1,3))
セルE1に
=MID(A1,LEN(B1)+1,150)
セルC1に
=IF(ISERROR(FIND("大和郡山市",E1))=FALSE,"大和郡山市",IF(ISERROR(FIND("四日市市",E1))=FALSE,"四日市市",IF(ISERROR(FIND("廿日市市",E1))=FALSE,"廿日市市",IF(ISERROR(FIND("郡山市",E1))=FALSE,"郡山市",IF(ISERROR(FIND("市原市",E1))=FALSE,"市原市",IF(ISERROR(FIND("郡上市",E1))=FALSE,"郡上市",IF(ISERROR(FIND("蒲郡市",E1))=FALSE,"蒲郡市",IF(ISERROR(FIND("小郡市",E1))=FALSE,"小郡市",IF(ISERROR(FIND("市川市",E1))=FALSE,"市川市",IF(ISERROR(FIND("郡",E1))=FALSE,LEFT(E1,FIND("郡",E1)),IF(ISERROR(FIND("市",E1))=FALSE,LEFT(E1,FIND("市",E1)),IF(ISERROR(FIND("区",E1))=FALSE,LEFT(E1,FIND("区",E1)),IF(ISERROR(FIND("町",E1))=FALSE,LEFT(E1,FIND("町",E1)),IF(ISERROR(FIND("村",E1))=FALSE,LEFT(E1,FIND("村",E1)),""))))))))))))))
セルD1に
=SUBSTITUTE(SUBSTITUTE(A1,B1,"",1),C1,"",1)

大阪府大阪市西淀川区福町3丁目1-50→大阪府 大阪市 西淀川区福町3丁目1-50
兵庫県神戸市兵庫区芦原通1丁目2番26号→兵庫県 神戸市 兵庫区芦原通1丁目2番26号
となります。これを

大阪府大阪市西淀川区福町3丁目1-50→大阪府 大阪市西淀川区 福町3丁目1-50
兵庫県神戸市兵庫区芦原通1丁目2番26号→兵庫県 神戸市兵庫区 芦原通1丁目2番26号

と市と区は同じセルに分けたいです。郡も同じで市と同じセルに分けたいです。
分ける区分は都道府県  市区郡  町名・番地と三つに分けます。

投稿日時 - 2015-12-15 12:02:51

QNo.9096135

困ってます

質問者が選んだベストアンサー

セルC1以外のセルは同じで,セルC1に
=IF(B1="東京都",LEFT(E1,FIND("区",E1)),IF(IFERROR(MATCH(LEFT(E1,1),{"堺"},FALSE),
IFERROR(MATCH(LEFT(E1,2),{"札幌","仙台","千葉","横浜","川崎","新潟","静岡","浜松","京都","大阪","神戸","岡山","広島","福岡","熊本"},FALSE),
IFERROR(MATCH(LEFT(E1,3),{"相模原","名古屋","北九州"},FALSE),
IFERROR(MATCH(LEFT(E1,4),{"さいたま"},FALSE),-1))))>0,LEFT(E1,FIND("区",E1)),
IF(IFERROR(MATCH(LEFT(E1,2),{"郡山","市原","郡上","蒲郡","小郡","市川"},FALSE),-1)>0,LEFT(E1,3),
IF(IFERROR(MATCH(LEFT(E1,3),{"四日市","廿日市"},FALSE),-1)>0,LEFT(E1,4),
IF(IFERROR(MATCH(LEFT(E1,4),{"大和郡山市"},FALSE),-1)>0,LEFT(E1,5),
LEFT(E1,IFERROR(FIND("郡",E1),FIND("市",E1))))))))
ということですか?

投稿日時 - 2015-12-15 17:30:55

お礼

そういうことです。
ありがとうございます。

投稿日時 - 2015-12-16 10:37:07

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.4

あの~、この住所録は必ず頭に都道府県名が入っているのでしょうか?

もし、入っているとして、「A」列に元住所、「B」列に都道府県名、「C」列にそれ以降とすると、

「B1」に「=IF(MID(A1,4,1)="県",LEFT(A1,4),LEFT(A1,3))」
と入力し、
「C1」には「=IF(MID(A1,4,1)="県",MID(A1,5,9999),MID(A1,4,999))」
と入力します。

すなわち、「神奈川県」、「和歌山県」、「鹿児島県」だけ、都道府県名が「4文字」で、それ以外は、すべて「3文字」なのと、「4文字」の場合は、必ず「県」であることを利用しています。

頭から4文字目が「県」という漢字なら、頭から4文字、それ以外は、頭から3文字を「B」列に抜き出し、同じように、「C」列には、4文字目が「県」なら、5文字以降、それ以外なら、4文字以降を抜き出しています。

本来は、文字数を「LEN()」で取得して・・・、とやるべきなのでしょうけど、邪魔くさいのと、長くなるので、絶対にあり得ない「999」文字を設定しています。

投稿日時 - 2015-12-15 19:50:02

お礼

ありがとうございます。

投稿日時 - 2015-12-16 10:38:45

ANo.3

>ここで教えて頂いた式なのですが

 その式では、A1セルに例えば「石川県」の「野々市市」の「二日市」という字の「一丁目」の住所である「石川県野々市市二日市一丁目」を入力すると

B1(都道府県):石川県
C1(市区郡):野々市
D1(町名・番地):市二日市一丁目

となってしまい、正しく区切る事が出来ません。
 その様な例は他にもあると考えられますので、それらを全て関数内で網羅しようとすると式がとんでもなく長くなる恐れがあります。
 ですから、使用していない適当な列に、全国の市区郡名を網羅したリストを作成しておいた上で、C1セルの関数を

=IF($E1="","",INDEX(「リストが設けられている列」,SUMPRODUCT(ISNUMBER(1/(FIND(「リストが設けられているセル範囲」,SUBSTITUTE(ASC($A1)," ",))=LEN($B1)+1))*ROW(「リストが設けられているセル範囲」))))

などの様な形式の関数とした方が良いのではないかと思います。(B1、D1の関数は変更なし、E1は使用せず)

投稿日時 - 2015-12-15 17:59:07

お礼

ありがとうございます。

投稿日時 - 2015-12-16 10:38:39

あなたにオススメの質問