
いつもお世話になります。セル内に住所が入力してあり、その住所を元に地方公共団体コードをつけたいと思います。地方公共団体コードとは市区町村ごとに充てられた6桁の数字です。
A列に住所が入力してあります。(県名は入力してありません。)次にB列に以下のような式を入力しました。
=if(find("区",a1),left(a1,find("区",a1)),if(find("郡",a1),left(a1,find("郡",a1)),if(find("市",a1),left(a1,find("市",a1)),"")
A列に区が含まれていたら、左から区の部分までをぬきだし、偽なら郡を探し、真ならば左から郡のところを抜き出し、偽なら市を探し、真ならば左から市のところを抜き出し偽ならば何もしない。
すごく、分かりづらいかもしれませんが・・・。ごめんなさい。
うまくいかないのですが、良い方法はありませんでしょうか?
No.6ベストアンサー
- 回答日時:
#02です
>、"郡"の場合は抽出する文字列を郡ではなく"町"もしくは"村"で
=IF(ISERROR(FIND("郡",A1)),LEFT(A1,MAX(IF(ISERROR(FIND({"区","市"},A1)),0,FIND({"区","市"},A1)))),LEFT(A1,MAX(IF(ISERROR(FIND({"町","村"},A1)),0,FIND({"町","村"},A1)))))
完璧にはできませんが、IF文繰り返しより少しはマシでしょうか
No.8
- 回答日時:
>郵便番号は全て入力
ゆうびんホームページより全国の郵便番号と住所の関連付けされたCSVファイルがダウンロードできます。
このCSVファイルには、全国地方公共団体コードも含まれていますので、有効的に活用すればいいかと。
ただ、私の場合は、Excelで無く、元の住所ファイル・郵便番号のCSVファイル両方をAccessに取り込んで、クエリを使用し確認しますので、その手順までは、ここでは説明しきれないかと^^;
>住所の頭から団体名の文字数分と団体名を比較して、エラーを訂正
A 住所
B 住所に対応した方公共団体コード =VLOOKUP(A1,F1:G999,2)
C 住所に対応した団体名 =VLOOKUP(A1,F1:G999,1)
D エラーチェック =IF(MID(A1,1,LEN(C1))=C1,"","Error")
E
F 対応表の団体名
G 対応表の地方公共団体コード
=IF(MID(住所が入ったセル,1,LEN(団体名を取得したセル))=団体名を取得したセル,"","Error")になります。
LEN(C1):C1のセルの文字数が取得出来ます
MID(A1,1,LEN(C1)):A1のセルの頭(1文字目)からC1セルの文字数分を抜き出し
IF(論理式,真の場合,偽の場合):抜き出した値と団体名が=だったら真、違っていたら偽を
論理式:MID(A1,1,LEN(C1))=C1
真の場合:空白("")を表示
偽の場合:"Error"を表示
参考URL:http://www.post.japanpost.jp/zipcode/dl/kogaki.h …
ありがとうございました。CSVファイルをダウンロードしました。
これを元にアクセスにインポートして、現在アクセスでファイルを構成しなおしてます。本当に助かりました。ありがとうございました。
No.7
- 回答日時:
ANo.4です。
抽出方法は既に答えてる方がいたので、最終的にどうしたいかで書き込みをしました。
団体名と地方公共団体コードの対応表は、既にあると思ったのが間違いの元ですね。
失礼しました。
団体名と地方公共団体コードの対応表が
・団体名が昇順に並んでいる
・町の場合の団体名が○○○郡XXX町で入力されている
この条件を満たせば、より少ない工数で目的が達成出来ると思ったのですが^^;
VLOOKUP(A1,D1:E999,2)で地方公共団体コード
VLOOKUP(A1,D1:E999,1)で団体名
住所の頭から団体名の文字数分と団体名を比較して、エラーを訂正
ま、私の場合でしたら、郵便番号を元に、地方公共団体コードを振るのを考えますが^^;
この回答への補足
回答ありがとうございました。
>間違いの元
とんでもないですよ!感謝いたします。
所で、郵便番号を元に、地方公共団体コードを振る・・・。
郵便番号は全て入力されてるのですが、良い方法があれば教えていただけないでしょうか?
肝心なところをレスしてませんでした。
団体名と地方公共団体コードの対応表は、既にあります。団体名と地方公共団体コードも昇順で並んでいるんですが・・・。具体的に教えていただけないでしょうか?
>住所の頭から団体名の文字数分と団体名を比較して、エラーを訂正
と言うのはfindなどの関数を使えばよいでしょうか?
ごめんなさい。本当に初心者なので・・・。
No.5
- 回答日時:
まあ、Excelの関数を駆使すれば出来るようですが、かなり、ややこしいです。
チクッとVBAを組めば、かなり簡単になります。
例えば、次は CutAddress()を自作した場合です。
<A列> <B列>
大田区太田町 大田区
太田郡太田町 太田郡
太田市太田町 太田市
市川市山川村 市川市
市川市市川村 市川市
B1=CutAddress(A1)
でズズーッと!
これで、上記のように抜き出されます。
(注意)郡に市が含まれないという前提。
Public Function CutStr(ByVal Text As String, _
ByVal Separator As String) As String
Dim I As Integer
Dim N As Integer
Dim strDatas() As String
Dim strCut As String
strDatas = Split("" & Separator & Text, Separator, , 0)
N = UBound(strDatas()) - 1
For I = 1 To N
strCut = strCut & strDatas(I) & Separator
If I = 2 Then
Exit For
End If
Next I
CutStr = strCut
End Function
Public Function CutAddress(ByVal R As Range) As String
CutAddress = CutStr(R, "区") & CutStr(R, "郡") & CutStr(R, "市")
End Function
この回答への補足
ありがとうございます。
恥ずかしながら、VBAほとんど理解できないので・・・。使い方が良く分かりません(>_<)
せっかく考えてくださったのに申し訳ないです。よろしければ、もう少しご教示願えないでしょうか?
No.2
- 回答日時:
こんな感じでしょうか
=IF(ISERROR(FIND("区",A1)),IF(ISERROR(FIND("郡",A1)),IF(ISERROR(FIND("市",A1)),"",LEFT(A1,FIND("市",A1))),LEFT(A1,FIND("郡",A1))),LEFT(A1,FIND("区",A1)))
でも「市川市」のような場合はうまくいかないと思いますよ。
この回答への補足
ありがとうございます!!!
もう一つお願いしたいのですが、私の最初の説明不足なのですが、"郡"の場合は抽出する文字列を郡ではなく"町"もしくは"村"でやりたいのですが、難しいでしょうか?
>でも「市川市」のような場合はうまくいかないと思いますよ。
仰るとおりです。その他にも「郡山市」や「四日市市」などあり、その辺は手作業で入力しようと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/06/06 10:13
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/11 14:50
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- フリーソフト Googleスプレッドシートで特定の言葉が含まれる行の色分けをしたいのですが 4 2022/04/30 15:29
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/10/25 17:10
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報