web-dev-qa-db-ja.com

複数の単語を「検索」および「返す」ための数式のクエリまたはフィルター

私はGoogleスプレッドシートの基本的なユーザーですが、新しい数式を作成するためのサポートが必要です。特定の情報を別のシートに返すように、ワークシートをフィルタリングしようとしています。
作成したフィルターは機能していますが、希望どおりのフィルターではありません。私が言及している列には、次のような単語があります。

  • 太陽
  • エネルギー
  • 電池

また、セル内に次のような2つの単語がある場合があります。

  • エネルギー比較、太陽電池(下の画像を参照)
    これらの単語はコンマで区切られています,

私が作成した式は、単一の単語を認識します。ただし、複数の単語を持つセルに属する単語は持ち込まれません。

私が使用している式の例は次のとおりです。

=filter('Form responses'!A:A,'Form responses'!I:I="Solar")

複数の単語もキャプチャするように更新するにはどうすればよいですか?

enter image description here

enter image description here

ありがとうございました! :)

2
Leanne

OPの編集 をたどると、状況がかなり明確になります。


FILTER関数の使用

=FILTER('Form responses'!A:A, REGEXMATCH('Form responses'!I:I, "Solar"))

追加のヒント
ORを表すFILTER関数で_|_(パイプ記号)を使用すると、式は次のようになります。

=FILTER('Form responses'!A:A, REGEXMATCH('Form responses'!I:I, "Solar|Energy Comparison"))

ただし、最初の条件(SolarにはすでにWord Solarが含まれるすべてのテキストが含まれているため、実際にその必要はありません。


クエリの使用

=QUERY('Form responses'!A:I, "select A where I matches '.\bSolar\b.' ",0)

以前と同様に、_|_(パイプ)を使用する必要はありません

=QUERY('Form responses'!A:I, "select A where I matches '.\bSolar\b.|.\bEnergy\b.' ",0)
1
marikamitsos

注意:次の提供された式によって与えられる結果は、フォームを作成した方法に大きく依存します
何らかの理由でうまくいかない場合は、-他の人が言及したようにダミーデータを含むテストスプレッドシートへのリンクを共有してください(マークのジョン、ブラウンのグリーンの氏)


検索に大文字と小文字を区別しない正規表現(regex)を使用するクエリ式は、必要な結果を提供します。

_=QUERY('Form responses'!A2:C200, ""select * where lower(A) matches 
       '.\bsolar\b.|.\benergy\b.'")_

簡単な説明(クエリが「言う」もの)

スプレッドシートの_2_(_Form responses_)の列A、行_'Form responses'!A2:C200_からデータが始まると想定

範囲_A2:C200_を選択し、列A内の検索で、大文字と小文字を区別しない単語solarまたはSOLARまたはsOlaRまたはenergyまたはEnergyなどに一致する結果が見つかれば、すべての列を返します。文字はそれらの前または後にあります。

  • _*_:すべて(範囲内のすべての列)
  • lower(A):文字の大文字と小文字を区別しません
  • _.*__._任意の文字、_*_任意の回数
  • _\b_:単語の境界(subsolarまたはsolarizedが一致しないようにします)
  • _|_(pipe)or
0
marikamitsos