web-dev-qa-db-ja.com

Excelでの複数の検索式

1つのセルで特定の単語を検索する数式を見つけようとしています。

数式の結果を私が選択した単語にしたいと思います。

私が持っているこの例は、一方のセルに成分のリストが表示され、もう一方のセルにアレルゲンのリストが表示されている場合です。成分リストを検索してアレルゲンを選択するための式が必要です。

enter image description here

Find関数を使用して、1つの結果が返され、結果を連結できることはわかっていますが、もっと簡単な方法が必要です。

ありがとう

2
Imi

TEXTJOINを導入したOffice365 Excelをお持ちの場合は、配列数式で使用できます。

=TEXTJOIN(", ",,IF(ISNUMBER(FIND( {"GLUTEN","PEANUTS"},C3)),{"GLUTEN","PEANUTS"},""))

配列数式であるため、編集モードを終了するときに、EnterではなくCtrl-Shift-Enterで確認する必要があります。

これにより、2つの名前が繰り返され、Findを使用して文字列がテストされます。見つかった場合、Findはエラーでない場合は数値を返しました。数値を返す場所を見つけたら、2番目の配列が正しい値をTEXTJOINに返します

enter image description here


しかし、より良い方法は、リストされているアレルゲンを含むテーブルを作成することです。

enter image description here

次に、式自体でリストを維持する代わりに、TEXTJOIN式でそのリストを参照できます。

=TEXTJOIN(", ",,IF(ISNUMBER(SEARCH( ALLERGEN[ALLERGENS],C3)),ALLERGEN[ALLERGENS],""))

それでも配列数式であり、大文字の違いに対処するためにSEARCHに切り替えました。

enter image description here

これで、新しいアレルゲンが必要になったときに、式を更新しなくてもリストに追加できます。

3
Scott Craner

セルC6では、次の数式を使用できます。

=MID(C3,FIND("Gluten",C3),LEN("Gluten"))&", "&MID(C3,FIND("Peanuts",C3),LEN("Peanuts"))

式の最後に以下を追加することで、検索するアレルゲンをさらに追加できます。

&", "&MID(C3,FIND("Another Allergen",C3),LEN("Another Allergen"))

そして、必要に応じて繰り返します。

成分に含まれていない可能性のあるアレルゲンをリストする場合は、これをエラープルーフすることもできます。

=IFERROR(MID(C3,FIND("Gluten",C3),LEN("Gluten")),"")&", "&IFERROR(MID(C3,FIND("Peanuts",C3),LEN("Peanuts")),"")&", "&IFERROR(MID(C3,FIND("Another Allergen",C3),LEN("Another Allergen")),"")

これはFINDを使用するため、検索パターンでは大文字と小文字が区別されるため、同じ2つの引数を同じ順序で受け取るSEARCH関数と交換することを検討してください。

2
PeterH