• ベストアンサー

住所フィールド分割

下記のような1つのフィールドデータの数値の手前から フィールドを分割したいのですが ご教授お願いいたします。 ○○県 ○○市 1-2-3 ○○市 ○ 10ー23 ○○区 ○○町 1 ↓ ○○県 ○○市     , 1-2-3 ○○市 ○        ,10ー23 ○○区 ○○町     ,1

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 例えば、 A1セルに  ○○県 ○○市 1-2-3 A2セルに  ○○市 ○ 10ー23 A3セルに  ○○区 ○○町 1 A4セルに  ☆△市 ◇×町 と入力すると、 C1セルに  ○○県 ○○市  C2セルに  ○○市 ○  C3セルに  ○○区 ○○町  C4セルに  ☆△市 ◇×町 D1セルに  1-2-3 D2セルに  10ー23 D3セルに  1 D4セルは  (空欄) という結果を表示させるのだとすれば、  まず、C1セルに次の関数を入力して下さい。 =LEFT($A1,MIN(FIND(1,ASC($A1&"1")),FIND(2,ASC($A1&"2")),FIND(3,ASC($A1&"3")),FIND(4,ASC($A1&"4")),FIND(5,ASC($A1&"5")),FIND(6,ASC($A1&"6")),FIND(7,ASC($A1&"7")),FIND(8,ASC($A1&"8")),FIND(9,ASC($A1&"9")),FIND(0,ASC($A1&"0")))-1)  次に、D1に次の関数を入力して下さい。 =SUBSTITUTE($A1,$C1,)  そして、C1~D1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  尚、上記の関数は、あくまでも御質問内容が >フィールドデータの数値の手前から フィールドを分割したいのですが というものでしたので、数値の手前を境にして分割する様にしたものです。  但し、日本国内には、例えば 石川県 能美市 寺井町 た35番地 という具合に、番地が数字から始まってはいない住所、というものも存在しますから、その様な住所に対しては、正しくは C列が  石川県 能美市 寺井町 D列が  た35番地 とすべき処なのですが、上記の関数では、 C列が  石川県 能美市 寺井町 た D列が  35番地 となってしまい、正しく分ける事が出来ません。  数字から始まってはいない番地に対しては、パソコンで自動的に分割する事は不可能だと思います。

yairi1106
質問者

お礼

長い住所に関しては4分割で 短い住所に関しては 2分割・3分割にできるのが理想です。

yairi1106
質問者

補足

アドバイスどうもありがとうございます。 情報が不足していてすいません。 カンマに関してはCSVデータをメモパッド等で見た場合です。 住所の数値以降からフィールド分割できたらそこから VBAで検証しようと思いご質問してみました。 詳しい詳細をお知らせいたしますが まず形式はUTF8形式CSVですので、テキストファイルからUTF8で開き スペースごとに分割することは出来ます。 住所はいろいろなパターンがあり数値前にスペースありなしが 混在したり下記のようなイメージです。 ○○市 ○○区 ○○谷 243-80 ○○谷○○ハイツ 1-309 ○○府 ○○区 ○○道通○○東入○○448-17○○ビル600 ○○市 中央区 ○○10○○15丁目1ー6 クリーンリバー○○市駅前I号棟1002号 ○○県 ○○市 本郷 1-13-1 ロイヤル○○市○○市 フロント○○市602 ○○市 ○○区 ○○一条7丁目16番10号 上記のようなデータを理想は均等に4等分にして 住所地名の途中で分割しないようにプログラムを組みたいのです。 例  ○○市 ○○区 ○○谷 , 243-80  , ○○谷○○ハイツ 1-309     ○○府 ○○区  ,○○道通○○東入○○ , 448-17○○ビル600     ○○市 中央区  ,○○10○○15丁目1ー6   ,クリーンリバー○○市駅前I号棟1     ○○県 ○○市 本郷  ,1-13-1 ロイヤル○○市○○市 ,フロント○○市602    ○○市 ○○区  ,○○一条7丁目16番10号 カンマで区切ってあるのはセル(フィールドの区切り)およびメモパッドで見た場合です。 tbl = Split(ReadBuf, vbCrLf) For i = LBound(tbl) To UBound(tbl) If Len(tbl(i)) > 0 Then tbl(i) = Replace(tbl(i), Split(tbl(i), ",")(2), _ Replace(Replace(Split(tbl(i), ",")(2), " ", ","), " ", ",")) End If Next i 上記のようにスペースをカンマにするような感じで、住所の途中で分割せずに フィールドを区切れないかと思いご相談させていただきました。 石川県 能美市 寺井町 た35番地 C列が  石川県 能美市 寺井町 D列が  た35番地 C列が  石川県 能美市 寺井町 た D列が  35番地 上記のような例外の場合はどちらの分割でも構いません。 ウインドウズ7(エクセル2010)  ウインドウズXP(エクセル2007)  マイクロソフト(アクセス2007)

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

ソフトはエクセルの課題か。バージョンなども書くこと。 エクセルなら データのある列(1列だけ)を範囲指定しておいて メニューの、データー区切り位置ー区切り文字をスペースで指定 の操作で各列のセルに分かれるが、これではどうかな。 上記はエクセルを使う人には常識なので、これで無い場合は、前もって質問で、断っておくべきぐらいのものだ。 番地部分も別セルに、分かれるが、「, 1-2-3」のカンマは何?番地部分はどうしてほしいの?

関連するQ&A