人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの関数に関してです。
住所を市町村で分けたいと思います。
仕様は下記の通りです。
都道府県名は既に削除されている状態です。

「区」がある場合は「区」まで
「市」がある場合は「市」まで
「郡」はある場合は「町」か「村」まで

「市原市」のようなイレギュラー案件は無視し
上記の仕様の関数を作って頂けますでしょうか。

お忙しい所、恐縮です。
よろしく、お願いいたします。


●質問者: martytaka
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●100ポイント

もしかしたら一括処理や、標準関数をご希望だったかもしれませんが、
ユーザ定義関数ということでVBAの例です。

下記を標準モジュールに置き、A1 に処理データがあるとした
B1 =SplitAddress($A1,1)
C1 =SplitAddress($A1,2)
として、どうでしょうか。

Option Explicit

Function SplitAddress(adr, pos)
 SplitAddress = ""
 Dim sPos As Long
 
 sPos = InStr(adr, "区")
 If sPos > 0 Then
 If pos = 1 Then SplitAddress = Left(adr, sPos)
 If pos = 2 Then SplitAddress = Mid(adr, sPos + 1)
 Exit Function
 End If
 
 sPos = InStr(2, adr, "市")
 If sPos > 0 Then
 If pos = 1 Then SplitAddress = Left(adr, sPos)
 If pos = 2 Then SplitAddress = Mid(adr, sPos + 1)
 Exit Function
 End If
 
 sPos = InStr(2, adr, "郡")
 If sPos > 0 Then
 sPos = InStr(sPos + 1, adr, "町")
 If sPos > 0 Then
 If pos = 1 Then SplitAddress = Left(adr, sPos)
 If pos = 2 Then SplitAddress = Mid(adr, sPos + 1)
 Exit Function
 End If
 
 sPos = InStr(sPos + 1, adr, "村")
 If sPos > 0 Then
 If pos = 1 Then SplitAddress = Left(adr, sPos)
 If pos = 2 Then SplitAddress = Mid(adr, sPos + 1)
 Exit Function
 End If
 End If
 
 If pos = 1 Then SplitAddress = adr
End Function

martytakaさんのコメント
す すみません。。 分かりません。。 VBA??

Mookさんのコメント
あら、普通の関数式を希望されていたでしょうか。 Alt+F11 で表示されたウィンドウで 挿入⇒標準モジュール で表示されたウィンドウに上記をコピーして、 セルに式を入れてください。 内容に関しては http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_user_kansu.html のあたりを参照してください。

martytakaさんのコメント
うう なんか分からないです。。 Alt+F11 で何も開かないです。。

Mookさんのコメント
あれ、開きませんか。 お使いの環境を聞いていませんでしたが、OS と EXCEL のバージョンは 何でしょうか。 Windows + 2007 以降でしたら、 http://kiyopon.sakura.ne.jp/soft/2007.html のあたりの設定が無いからでしょうか。 マクロが無効になっているのであれば、上記回答は機能しないので 別の回答をお待ち下さい。

Mookさんのコメント
再質問をされたようですね。 こちらはキャンセルでいいです。 質問に、標準関数での回答希望と OS と EXCEL のバージョンは記載したほうが良いかと思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ