エクセルの関数に関してです。

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

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/07/24 16:44:07
  • 終了:2012/07/31 16:45:03

回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912012/07/24 17:46:37

ポイント100pt

もしかしたら一括処理や、標準関数をご希望だったかもしれませんが、
ユーザ定義関数ということで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
他3件のコメントを見る
id:Mook

あれ、開きませんか。

お使いの環境を聞いていませんでしたが、OS と EXCEL のバージョンは
何でしょうか。

Windows + 2007 以降でしたら、
http://kiyopon.sakura.ne.jp/soft/2007.html
のあたりの設定が無いからでしょうか。

マクロが無効になっているのであれば、上記回答は機能しないので
別の回答をお待ち下さい。

2012/07/24 19:54:42
id:Mook

再質問をされたようですね。
こちらはキャンセルでいいです。

質問に、標準関数での回答希望と OS と EXCEL のバージョンは記載したほうが良いかと思います。

2012/07/24 20:04:46
  • id:martytaka
    すみません!
    補足です。
    札幌市白石区や
    渋谷区
    の場合は、
    それぞれ、札幌市白石区、渋谷区という結果になる事を望んでおります。
    区の方が市より優先する仕様という意味です。
  • id:kota_46ra
    =IF(情報セル=SUBSTITUTE(情報セル,"区","区:","1"),IF(情報セル=SUBSTITUTE(情報セル,"市","市:","1"),IF(情報セル=SUBSTITUTE(情報セル,"区","区:","1"),情報セル,SUBSTITUTE(情報セル,"区","区:","1"),SUBSTITUTE(情報セル,"市","市:","1")),SUBSTITUTE(情報セル,"区","区:","1"))
    上参考(そのままだと引数エラーになる)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません