質問: エクセルのfind関数の複数セル参照について c4=lookup(0,0/find(b4,テーブル1[アドレス]),テーブル1[名称]) 「テーブル1」の「アドレス」列を部分一致で検索し、「b4」セルの文字列に該当する項目があったら、「テーブル1」の「名称」列のデータを「c4」セルに表示するよう、インターネット上の情報を参照しながら数式を組んでいます。 ところが、「b4」セルの文字列に該当する項目があるときはいいのですが、該当項目がない場合は「#n/a」と表示されるため、「if」関数を追加し、以下のようにしたところ、うまく動きませんでした。 c4=if(count(find(b4,テーブル1[アドレス])),lookup(0,0/find(b4,テーブル1[アドレス]),テーブル1[名称]),"未使用") 「数式の検証」で調べたところ、「lookup」関数内の「find」関数は「テーブル1」の「アドレス」列の各セルをそれぞれ参照しているのに対して、「count」関数内の「find」関数は同じ行(c4の場合は4)の「テーブル1」の「アドレス」列しか参照していませんでした。 「lookup」関数内の「find」関数のテーブル1[アドレス]: {"アドレス1";"アドレス2";"アドレス3"} 「count」関数内の「find」関数のテーブル1[アドレス]: "アドレス4" 参照内容が異なるのはなぜでしょうか。 この場合、どのようにすればよろしいのでしょうか。 また、「lookup」関数は「旧バージョンとの互換性を維持するためのもの」となっており、代わりに「vlookup」や「hlookup」、「match」関数などで代用はできないのでしょうか。 何卒ご教示よろしくお願いいたします。
回答: ご利用のエクセルのバージョンがご相談に書かれていませんが,情報から2010以降を利用しているのが明らかです。 とりあえずご質問の数式をそのまま活かしたいなら =iferror(lookup(0,0/find(b4,テーブル1[アドレス]),テーブル1[名称]),"未使用") とでもしてください。 普段使いの関数を使い アドレス列(仮にg列)のひとつ右隣(仮にh列)に名称列があるなら =iferror(vlookup(b4,g:h,2,false),"未使用") としたほうが,遙かに簡単です。 リストの配置をどうしても動かしたくないなら 仮にh列を検索してg列を取得する =iferror(index(g:g,match(b4,h:h,0)),"未使用") です。