web-dev-qa-db-ja.com

Excel:配列数式を使用して特定の文字列内の文字列のリストを検索しますか?

セルから単語のリストを検索したい。私はこれが配列式として機能すると思った:

{=FIND(<list of words I want to search for>,<cell I want to search>)}

ただし、検索しているセルにある単語が、検索している単語のリストの最初の行にある場合にのみ一致します。リスト全体を調べる式を書く方法はありますか?そして、TRUE/FALSEを返さなかった方がいいと思います。単語のリストをセルで検索し、リスト内の単語がセルに存在するかどうかに基づいてTRUE/FALSEを返す方法を知っています。どのWordが見つかったか、またはその位置を実際に知りたいです。

これは一致するWordを返すか、一致するものが見つからない場合はエラーを返します。この例では、次を使用しました。

検索する単語のリスト:_G1:G7_
検索するセル:_A1_

_=INDEX(G1:G7,MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*(ROW(G1:G7)-ROW(G1)+1)))
_

を押して配列数式として入力します Ctrl+Shift+Enter

この式は、最初に単語のリストを調べて一致を見つけ、次にリスト内の単語の位置を、見つかった場合は正の値として、見つからない場合は負の値として記録します。この配列の最大値は、リスト内で見つかったWordの位置です。 Wordが見つからない場合、負の値がINDEX()関数に渡され、エラーがスローされます。

一致するWordの行番号を返すには、次を使用できます。

_=MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*ROW(G1:G7))
_

これも押して配列式として入力する必要があります Ctrl+Shift+Enter。一致が見つからない場合は_-1_を返します。

28
Excellll

TRUE/FALSE回答が完全に受け入れられる私のような人々にこの回答を追加する

OR(IF(ISNUMBER(SEARCH($G$1:$G$7,A1)),TRUE,FALSE))

または大文字と小文字を区別

OR(IF(ISNUMBER(FIND($G$1:$G$7,A1)),TRUE,FALSE))

検索語の範囲はG1:G7

CTRL + SHIFT + ENTERを忘れずに押してください

2
Some_Guy
  1. Wordのリストを、単語に決して含まれない区切り文字で並べます。 |
  2. find呼び出しで引数を交換します-セル値がパターン文字列{=FIND("cell I want to search","list of words I want to search for")}の単語のいずれかに一致する場合に検索が必要です
  3. パターンが類似している場合、必要以上の結果が得られるリスクがあります。& "|"を追加して、正しい結果のみを制限します。セルG3には、テストされたセル値(配列数式でうまく機能します)を含めることができます。{=SUM(FIND($A$1:$A$100&"|";A3))}これにより、スプレッドシートが「cellvlaue |」 againts "pattern1 |"、 "pattern2 |" pattern1 = "newly added"、pattern2 = "added"などの競合を整理します( "added"に一致するすべてのセルの合計は高すぎます。エラー)
0
RRTrash