OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.147135
  • 閲覧数120
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 45% (20/44)

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

EX)   
        A                B
 東京都文京区あいうえお町123     文京区
 東京都世田谷区かきくけこ町234    世田谷区
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答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

お礼率 45% (20/44)

ありがとうございます。 
どうやって勉強されるのでしょう??
初心者の私には心強いです。
投稿日時 - 2001-10-08 09:30:08
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル10

ベストアンサー率 57% (68/119)

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

  • 回答No.2
レベル12

ベストアンサー率 52% (322/612)

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

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

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

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

試してみて下さい!

 
  • 回答No.4
レベル8

ベストアンサー率 35% (19/53)

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

ベストアンサー率 51% (254/492)

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

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

【エクセル技道場】-関数-数字で始まる部分から区分
http://www2.odn.ne.jp/excel/waza/function.html#SEC26
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ