• ベストアンサー

エクセル2000で文字を抽出するには

エクセル2000で、A列に住所が入力されていて、B列に区のみを抽出する方法を教えてください。区は3文字の場合や2文字の場合が発生します。 EX)            A                B  東京都文京区あいうえお町123     文京区  東京都世田谷区かきくけこ町234    世田谷区

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

  • ベストアンサー
noname#1489
noname#1489
回答No.3

特別区・行政区として"区"を持つ都市は、東京都23区と政令指定都市(札幌、仙台、千葉、川崎、横浜、名古屋、京都、大阪、神戸、広島、北九州、福岡)のみということになりますが、"区"を含まない住所の場合、find関数を使用するとエラーが発生します。 エラーを回避するには、ユーザー定義関数を作成するのがよいかと思います。以下、その手順です。 「ツール」-「マクロ」-「Visual Basic Editor」で『Visual Basic Editor』を起動します。 「挿入」-「標準モジュール」を選択します。 表示された「モジュールシート」に関数を定義するためのコードを記述します。(Function Ward・・・からEnd Functionまでをコピー&ペーストすれば簡単です。ここの投稿欄は、行頭の空白を自動的に削除してしまうので、少々見にくいですが・・・) ====↓ここから=========================== Function Ward(adrs As String) As String Dim tmp_ad As String Dim str_no, str_len As Long tmp_ad = adrs If Left(tmp_ad, 3) = "東京都" Then str_no = 3 Else Select Case Left(tmp_ad, 6) Case "北海道札幌市" str_no = 6 Case "宮城県仙台市" str_no = 6 Case "千葉県千葉市" str_no = 6 Case "神奈川県横浜" str_no = 7 Case "神奈川県川崎" str_no = 7 Case "愛知県名古屋" str_no = 7 Case "京都府京都市" str_no = 6 Case "大阪府大阪市" str_no = 6 Case "兵庫県神戸市" str_no = 6 Case "広島県広島市" str_no = 6 Case "福岡県福岡市" str_no = 6 Case "福岡県北九州" str_no = 7 Case Else str_no = 0 End Select End If Ward = "" If str_no <> 0 Then str_len = 1 Do While str_len <= Len(tmp_ad) - str_no If Mid(tmp_ad, str_no + str_len, 1) = "区" Then Ward = Mid(tmp_ad, str_no + 1, str_len) Exit Do Else str_len = str_len + 1 End If Loop End If End Function ====↑ここまで=========================== 「ファイル」-「終了して Microsoft Excel へ戻る」を選択します。 セルA2の区名をセルB2に抽出する時には、 =Ward(A2) と入力します。これで、特別区・行政区名のみが抽出され、それ以外の住所には空白が入ります。

BA-BA
質問者

お礼

ありがとうございます。  どうやって勉強されるのでしょう?? 初心者の私には心強いです。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • kbonb
  • ベストアンサー率51% (254/492)
回答No.5

こんにちは  以下のページがご参考になるのでは? 【エクセル技道場】-関数-数字で始まる部分から区分 http://www2.odn.ne.jp/excel/waza/function.html#SEC26

参考URL:
http://www2.odn.ne.jp/excel/waza/function.html#SEC26
すると、全ての回答が全文表示されます。
  • zealzany
  • ベストアンサー率35% (19/53)
回答No.4

すでに住所が入力されていて、という質問から皆さんが回答をされています。私もFINDを使用する方法を思いついたのですが、継続的にそのシステム使用していく場合 を考えてみると郵政の出している郵便番号データを利用する方が便利になるのではと思います。質問内容に答えている訳でも、回答でもありませんが一考されてもよいかと思います。

すると、全ての回答が全文表示されます。
  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんにちは! 都道府県名や区市町村名の区分けはその区分け文字 が地名に使われている("市"川市や京"都"府など) 場合があり、必ず例外が発生します。 それを承知で抽出後チェックを行うのを条件とすれば 以下のような案もあります。 データがA2からとして B2に  =MIN(IF(NOT(ISERROR(FIND({"府","県","道","都"},A2,1))),FIND({"府","県","道","都"},A2,1))) C2に  =MIN(IF(NOT(ISERROR(FIND({"群","区","市"},A2,B2))),FIND({"群","区","市"},A2,B2))) D2に  =MID(A2,B2+1,C2-B2) と入力後、必要行まで複写 試してみて下さい!  

すると、全ての回答が全文表示されます。
  • tyom77
  • ベストアンサー率57% (68/119)
回答No.1

A列は、東京都だけでしょうか? 下の回答は、A列が東京都だと想定して書かせてもらいました。 B列に =MID(A1,4,FIND("区",A1)-3) とすれば、できると思います。 find関数で区の位置を求めて、 mid関数で、A1のセルの4番目からA1のセルの区の位置から3を引いたものに すれば、目的の区のみ抽出できます。

すると、全ての回答が全文表示されます。

関連するQ&A