- 締切済み
エクセルで・・・。
(1) A県B市D町2-15-3 (2) A県B郡1-2-3 (3) A県C市F町4-3-5 という住所のデータがあったとき(1)ならA県B市D町 と 2-15-3 (2)ならA県B郡 と 1-2-3 の間で分けたいんですけどどうすればいいでしょう? ※県郡市などに含まれる数字は漢数字、番地町名は必ず英数字になってます。 ※住所の長さはもちろんバラバラです。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- maron--5
- ベストアンサー率36% (321/877)
B1=LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&1234567890))-1) C1=RIGHT(A1,LEN(A1)-LEN(B1)) ★山梨県南アルプス市、池田市ダイハツ町 対策として B1=LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&1234567890))-1-LEN(ASC(A1))+LEN(A1))
#3さんの言われている、番地が日付に変換されてしまうのを防ぐには、 丁目、番地の入る列の列番号をクリックして、列全体を選択しておき、 「書式」-「セル」であらかじめ表示書式を「文字列」にしておけばOKです。 計算式を入れる前に設定しておかないと、意味がありません。 「2-5-3」が「2002年5月3日」に変換されてしまってから、書式を文字列にしても、 何の効果もありませんので、ご注意を。
B1: {=LEFT(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0)-1)} (配列数式) C1: =SUBSTITUTE(A1,B1,"")
- imogasi
- ベストアンサー率27% (4737/17070)
これはエクセル関数にとって、しつこいもんだいだと思う。 (1)まず半角数字と全角数字を統一するために、全角数字にする。 JIS関数 (2)それに対し、数字の初出に文字数を出す。これが技巧がいる。 とりあえず。 A列 B列 例データ 岡町1-2-34 3 喜多大路234-6 5 東京都千代田区大手町2-3-4 11 B1に =MIN(IF(ISNUMBER(VALUE(MID(A1,ROW(A1:A20),1))),ROW(A1:A20),"")) と入れて, SHIFT,CTRL,ENTERキーを同時押しする。 結果 上記のとおり。3、511 これを元に, 先頭部は、=LEFT(A1,B1-1) 後の部分は、=RIGHT(A1,len(A1)-B1+1) B1の式を埋め込んで1つにすることができますが、判り易いように しました。 20桁以下を全艇にしてます。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
関数でヤるなら「はじめて1から9のどれかが現れた場所」で切るので、そこを =min(find(A1,"1",1),find(A1,"2",1),中略,find(A1,"9")) で発見して、left関数かmid関数で分けます。 でも、番地だけのデータを作るのはお薦めしません。Excelは「2-5-3」なんて 文字列を見つけると、勝手に日付だと誤解する癖があります。ちょいと修正 したばっかりに、2002年5月3日なんて日付に変わって苦労するのはイヤでしょ。
- gookkj
- ベストアンサー率49% (64/129)
- jesuirio
- ベストアンサー率30% (12/39)
私の意味のとりかたが間違っていればすいません。 (1)なら、 入力の場所を、A県B市D町 を「A1」のセルに。 2-15-3 を「B1」にするのではダメなのでしょうか? 長さなら、セルの幅を変えれば入力できますので・・・。
補足
すいません説明が悪かったです。 A1に全部入ってます。(2)ならA2です。 それが何百件あるとします。それを関数を使って分けたいのです。