質問: エクセル関数(find)について 住所からデータ整理できるように関数を作成しています 文字列のうち 「大阪市」を含むものを「大阪市」 「東大阪市」を含むものを「東大阪市」と表示させたいです =if(isnumber(find("大阪市",a1,1)),"大阪市","")&if(isnumber(find("東大阪",a1,1)),"東大阪市","") という関数を作成したのですがうまくいきません 何故ならば「東大阪市」と入力されているセルに対し「大阪市」と「東大阪市」の両方の命令が反応してしまうからです 【結果】大阪市東大阪市 どうすれば「大阪市」「東大阪市」それぞれを表示する関数を作成することができるでしょうか 「大阪府」が入力されているものとそうでないセルがありまして、最終的には 大阪府大阪市(以下略)→「大阪市」と表示 大阪市(以下略)→「大阪市」と表示 大阪府東大阪市(以下略)→「東大阪市」と表示 東大阪市(以下略)→「東大阪市」と表示 させたいです (以下略)には不明のため何も入力されていないセルもあれば、〇〇区〇〇丁目〇〇と入力されているセルもあります 駄目な方法 ・(以下略)で特定する方法:大阪市の区の名前で特定するなど、(以下略)の部分で特定するのはダメです(∵入力されていないセルが存在するから) ・if関数で真の場合「大阪市」、偽の場合「東大阪市」とする方法(∵今後、大阪市や東大阪市以外のデータが増えた場合、全て偽の結果になってしまうため) ・特定の文字に完全一致する場合だけ表示する方法(∵「大阪市」と完全一致した場合とすると、「大阪市〇〇区」と大阪市以下が入力されているデータや「大阪府大阪市」に反応しないため) 宜しくお願いします
回答: =replace(if(isnumber(find("大阪市",substitute(a1,"東大阪市",))),",大阪市","")&if(isnumber(find("東大阪市",a1)),",東大阪市",""),1,1,) の様にされては如何でしょうか? 因みに、上記の関数では「東大阪市」と「大阪市」の両方が含まれている場合には、 大阪市,東大阪市 と表示されます。