vbaでInStr(住所を示す文字列,"市")では、前から検索のため、市川市を抽出できない。ところが、InStrRevならば、後ろから検索なので、市川市を抽出できる。つまり、前から攻めて駄目(InStr)ならば、後ろから攻めろ(InStrRev)ってことだね。
Function AREA(address as String) as String If inStrRev(address,"市")>0 then AREA = Left(address,InstrRev(address,"市")) End If End function最初は、以下のコードで市川市を特異点として特別に扱うこと(2段構造)で回避してたんだけど、InStrRevなら1回で済ませることができる。ググってみて分かった。皆さん、凄いね。賢い人がいるんですな。ちなみに、市川市の他に市原市も同じ罠にハマるけど、InStrRevならば、大丈夫。名前に市という文字を含む場合にはInStrRevで抽出すれば良い。
Function AREA(address as String) as String If inStr(address,"市川市")>0 then AREA = Left(address,Instr(address,"市")+2) ElseIf inStr(address,"市")>0 then AREA = Left(address,Instr(address,"市")) End If End function
0 件のコメント:
コメントを投稿