昨年からずっと忙しくて、いろいろ書きたいネタはあったんだけど、結局まる一年更新さぼってたので軽いネタでとりあえず埋め草。
住所記入欄から都道府県を抽出する
※ 住所文字列より左(前)に空白他、住所以外の文字が入っていないこと。
※ 〓→住所文字列格納セル(例:A1)
=IF(OR(MID(〓,3,1)="都",MID(〓,3,1)="道",MID(〓,3,1)="府",MID(〓,3,1)="県"),LEFT(〓,3),LEFT(〓,4))
OR()の中がくどいので、Access の In 演算子みたいなのが欲しい。
書式はこんな感じ。
IsIn(MID(〓,3,1),("都","道","府","県"))
戻り値は、何番目の要素にヒットしたか、その順番。0のときはヒットしなかったということ。
これを使って都道府県切り出しを書き直すと…
=IF(ISIN(MID(〓,3,1),("都","道","府","県"))<>0,LEFT(〓,3),LEFT(〓,4))
…どうせ VBA でユーザー関数作るなら VBS 呼び出して正規表現でパターンマッチした方がいいかも。
正規表現でパターンマッチするユーザー関数を TESTRE とすると…
testRE(LEFT(〓,3),"[都|道|府|県]$")
これはいずれかにマッチしたかどうかしかわからない。これを使って書き直したら…
=IF(TESTRE(LEFT(〓,3),"[都|道|府|県]$")),LEFT(〓,3),LEFT(〓,4))
ISIN() と TESTRE() はいずれも必要性高そうなのでソースコード書いたら後で追記する(つもり)