TL; DR:SEARCH(search_for, text_to_search)
を使用すると、 "search_for
"は可変長配列です。
Googleスプレッドシートには、4つのセル、E1:E4があります。各セルの値は次のとおりです。
| E | -+ ------------ + 1 |ティム| 2 |フランク| 3 |ティム、フランク| 4 |ジェニファー| -+ ------------ +
ARRAY1と呼ばれる配列もあります。 ARRAY1の値は{Tim; Frank}
です。
私が探しているのは、EセルにARRAY1の値が含まれているかどうかを示すブール値を与える数式です。現在の例では、{TRUE; TRUE; TRUE; FALSE}
を返す必要があります。これは、FILTER数式で使用されます。
ARRAY1に1つの値が含まれている(配列ではない)場合にうまく機能する素敵な小さな式があります。
=arrayformula(isnumber(search(ARRAY1,E1:E4)))
たとえば、ARRAY1が{Tim}
の場合、{TRUE; FALSE; TRUE; FALSE}
を返します。
ただし、この例ではARRAY1には2つの値が含まれています。実際には、E:Eと同様に、可変数の値が含まれています。
FILTER関数はE1:E4のそれぞれを自動的に実行するため、配列を配列と比較することを求めていません。したがって、それは単一の参照と見なすことができます-私の知る限り。
ARRAY1を{Tim; Frank}
に変更すると、{FALSE; FALSE; FALSE; FALSE}
になります。
私が本当に何をしているか見当もつかない。
誰も私を助けることができますか?
SEARCHの代わりにREGEXMATCHとJOINを使用します。
SEARCHは、部分文字列を他の文字列に検索するためのものであり、配列で使用する場合、両方のパラメーターは同じサイズの配列である必要があります。
JOINを使用すると、REGEXMATCHで使用される正規表現を作成できます。最初のパラメーターが配列で、ARRAYFORMULA内にネストされている場合、TRUE/FALSEの配列を返します。
OPの例を考慮すると、使用される式は
=ArrayFormula(REGEXMATCH(E1:E4, JOIN("|",{"Tim","Frank"})))
編集:申し訳ありませんが、E3の値にTimとFrankの両方が含まれていることは確認しませんでした。 [その他の回答]( https://webapps.stackexchange.com/a/91342/8816 を参照してください
SEARCHの代わりにMATCHを使用します。
SEARCHは、部分文字列を他の文字列に検索するためのものであり、配列で使用する場合、両方のパラメーターは同じサイズの配列である必要があります。
一方、MATCHは異なるサイズの配列を持つことができます。
OPの例を考慮すると、使用される式は
=ARRAYFORMULA(ISNUMBER(MATCH(ARRAY1,E1:E4,0))