- ベストアンサー
各行ごとに異なる文字を抽出したいです。2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まずC2セルに次の関数を入力して下さい。 =IF($A2="","",IF(AND(LEFT($A2,3)="東京都",FIND("区",LEFT($A2,7)&"区")<8),MID($A2,4,FIND("区",$A2)-3),IF(OR(ISNUMBER(MATCH(MID($A2,3,1),{"都","道","府","県"},0)),ISNUMBER(MATCH(LEFT($A2,4),{"神奈川県","和歌山県","鹿児島県"},0))),LEFT($A2,3+ISNUMBER(MATCH(LEFT($A2,4),{"神奈川県","和歌山県","鹿児島県"},0))),"(不明な住所)"))) そしてC2セルをコピーして、C3以下に貼り付けて下さい。 尚、東京都の中にも八王子市のように23区に属さない地域もありますから、その様な場合には区名ではなく「東京都」と表示されるようにしております。 又、神奈川県のように県名の中には4文字のものもありますから、単純に住所の先頭部分の3文字を抽出するだけでは駄目なので、ちゃんと県名の文字数に合わせて抽出するようにしております。 又、地名の中には例えば岐阜県山県市のように都道府県名以外の部分に「県」が付く地名もありますが、そのような場合にも県名のみが抽出されるようにしております。 又、住所の先頭部分に都道府県名が記入されていない場合については「(不明な住所)」と表示するようにしております。 但し、例えば「架空県出鱈目市嘘町800番地」などのような存在しない県名であっても県名が3文字の場合には「架空県」という具合に抽出されてしまいますので注意して下さい。
その他の回答 (3)
- kagakusuki
- ベストアンサー率51% (2610/5101)
済みません、先ほどの回答内容におけるC2セルに入力する関数には(動作上の問題こそ無いものの)少々冗長な点がありましたので、以下の関数と差し替えて下さい。 =IF($A2="","",IF(ISNUMBER(MATCH(MID($A2,3,1),{"都","道","府","県"},0)),IF(AND(LEFT($A2,3)="東京都",FIND("区",LEFT($A2,7)&"123区")<8),MID($A2,4,FIND("区",$A2)-3),LEFT($A2,3)),IF(ISNUMBER(MATCH(LEFT($A2,4),{"神奈川県","和歌山県","鹿児島県"},0)),LEFT($A2,4),"(不明な住所)")))
- SI299792
- ベストアンサー率47% (788/1647)
「区」の後に文字はあるのですか❓ サンプルにはないので、ないものとみまします。 この場合2つの考え方かあります。 行によって抽出内容が違うのであれば、別々の数式を入れなければなりません。 C2: =MID(A2,FIND("都",A2)+1,99) C3へコピペ。 C4: =LEFT(A4,2) C5へコピペ。 「都」があれば、「都」以降、なければさいしょから2文字であれば、 C2: =IFERROR(MID(A2,FIND("都",A2)+1,99),LEFT(A2,2)) 下へコピペ。 グーグルスプレッドシートならarrayformulaが使えます。 C2: =arrayformula(IFERROR(MID(A2:A,FIND("都",A2:A)+1,99),LEFT(A2:A,2))) コピペ必要なし。 https://docs.google.com/spreadsheets/d/1dm4oMYCDDmDlR8D0eOfMvmBNo7gFaTxEofxh-2vFwF0/edit?usp=sharing
- hiro_1116
- ベストアンサー率30% (2581/8347)
抽出条件を整理すると、 「東京都」で始まる場合→「都」の後ろに続く「○○区」を抽出(○の数は変動) 「東京都」以外ではじまる場合→先頭の2文字を抽出 ということで宜しいでしょうか? 仮に「東京都」が省略されて、いきなり「千代田区」で始まるデータがあったとすると、「千代」が抽出されますが、大丈夫ですね?