エクセル2000で、A列に住所が入力されていて、B列に区のみを抽出する方法を教えてください。区は3文字の場合や2文字の場合が発生します。

EX)   
        A                B
 東京都文京区あいうえお町123     文京区
 東京都世田谷区かきくけこ町234    世田谷区

A 回答 (5件)

こんにちは



 以下のページがご参考になるのでは?

【エクセル技道場】-関数-数字で始まる部分から区分
http://www2.odn.ne.jp/excel/waza/function.html#S …

参考URL:http://www2.odn.ne.jp/excel/waza/function.html#S …
    • good
    • 0

すでに住所が入力されていて、という質問から皆さんが回答をされています。

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

特別区・行政区として"区"を持つ都市は、東京都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)

と入力します。これで、特別区・行政区名のみが抽出され、それ以外の住所には空白が入ります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/08 09:30

こんにちは!



都道府県名や区市町村名の区分けはその区分け文字
が地名に使われている("市"川市や京"都"府など)
場合があり、必ず例外が発生します。
それを承知で抽出後チェックを行うのを条件とすれば
以下のような案もあります。

データが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)

と入力後、必要行まで複写

試してみて下さい!

 
    • good
    • 0

A列は、東京都だけでしょうか?


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

このQ&Aに関連する最新のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ