• 締切済み

文字列操作の関数はIF関数で使えない?

いつもお世話になります。 下記のように顧客情報を入力しています。(()内はセルの番号です。) コード(A1) 名前(B1) 〒(C1) 住所(D1) 市町村(E1) 顧客の残高を管理するために市町村(E1)に住所から数式で取り出したい(○○市~15-1→○○)のですが、市、町、村、区(~市…区)が混在しているからか上手くいきません。 色々調べたところ、下記の数式でSEARCH関数を使用するとキレイに表示できたので使用したいのですが、"町"、"村"、"区"についてもいいっぺんに出来る方法が分かりません。   =LEFT(D1,SEARCH("市",D1)-1) IF関数を使いたいですが、上手くいきません。 何か良い方法はあるでしょうか? よろしくお願いします。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO1です。 >○○市▲▲区 → ○○市(▲▲区と表示したい) >社員も顧客の中にいて、その場合はD1には■◇■(←社名)社員 ⇒抽出条件が多様なようですので文字列から抽出は困難だと思います。  〒番号を元に市区町村の対応リストを作成し、それを元に検索関数で抽出した方が早いと思いますのでご検討下さい。  

回答No.2

こういう質問で思い出すのは、町田市や市川市や下市町や中村区で すね。一律に関数で市町村を抜き出すのは無理があります。 で、そんなの現れないよってくらいローカルな話なら、商圏内の自 治体名を書き出したリストでも作って、入力規則を設定してやるの が将来にわたって楽が出来ると思います。リストと言えば、きちん と昇順に並べ替えたリストがあれば、 =index(リスト,match(D1,リスト,1)) で抜き出せます。リストにない住所を入力すると破綻しますけど。

bunmarines
質問者

補足

早速のご回答ありがとうございます。 リスト…なるほど。 現在、20弱の市町村が出てきます。 顧客は確実に増えていくので、いっそリストにした方が手間が省けるのかもしれません。 どうしても上手い方法が出なかった時は使ってみます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

市区町村のの文字列が市区町村名に重複していた場合は手入力になりますが、次の方法は如何でしょうか。 =LEFT(D1,FIND("#",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D1,"市","#"),"区","#"),"町","#"),"村","#"))-1)

bunmarines
質問者

補足

早速のご回答ありがとうございます。 ワイルドカードを使う方法は考えてもみなかったです。 ただ、区については上手く表示されず…。 ○○市▲▲区 → ○○市(▲▲区と表示したい) となってしまいました。 その場合は別な式を組んだほうがよいのでしょうか? それと、書き忘れてしまいましたが社員も顧客の中にいて、その場合はD1には■◇■(←社名)社員としています。 mu2011様が教えてくださった式でやると上手くいませんが、この場合も別の式を挿入した方が良いのでしょうか?

関連するQ&A