Googleスプレッドシートの一部のデータを分類しようとしています。
サンプルファイルを作成しました こちら: 関連する投稿へのリンクもあります。
列Aの単語を使用した正規表現を使用して、Aの一部のフレーズと一致させ、Bから適切なカテゴリを返します。
たとえば、「blueish house」で「blue」を検索し、「color」を返します。 「偉大な白い靴」で「白」を見つけて「色」を返したいのですが、数字が続く場合はそうではありません。したがって、正規表現を使用する必要があります。
列C TAB「フレーズ」で次の式を使用しています。機能しますが、正規表現では機能しません。 regを返します。式自体であり、カテゴリに一致することはできません。
=arrayformula(vlookup(arrayformula(iferror(regexextract(A2:A8,join("|",Words!$A$1:$A$7)))),Words!A$1:B,2,0))
列Dで(関連する投稿から)数式を調整しようとしましたが、機能しません。
これが私がしたことです-SO Test-Aurielleという名前のドキュメントをドキュメントに追加しました。
次に、以下を使用して、列Bに可能なカテゴリの一意のリストを作成しました。
=UNIQUE(Words!B:B)
列Aでは、|
である正規表現AND
演算子を使用してJOINを実行し、次の式を使用しました。
=IF(ISTEXT(B2),JOIN("|",FILTER(Words!A:A,Words!B:B=B2)),)
基本的にフィルターは、カテゴリー値によってキーワードを結合するように制限します。
次に、列Dに次の式を追加しました。
=IFERROR(INDEX(A$2:B,MATCH(TRUE,ARRAYFORMULA(REGEXMATCH(C2,INDIRECT("A"&2&":A"&3+COUNTA(B$2:B)))),0),2))
基本的にここで何が起こるかは、内側からそれを分解する場合、値が実際に存在する行に応じてtrueまたはfalseを返すREGEXMATCHとともにARRAYFORMULAを使用していることです.
したがって、ワードTRUEを使用してMATCH数式のキーにし、次にINDEXを使用して、インデックス行を取得し、1列上に移動してカテゴリを取得します。
注:また、列Bに実際に存在する値の数を計算するために追加のINDIRECT式を追加し、必要な行数に式が動的に対応できるようにします。