フィルターとVSTACKによる部分一致の使用

フィルターとVSTACKによる部分一致の使用

このサイトのいくつかの提案の助けを借りて、いくつかのワークシートから取得する次の数式を取得しました。

=FILTER(VSTACK(FRR:SOD!G3:M200),
  (VSTACK(FRR:SOD!K3:K200)<>"")*
  (VSTACK(FRR:SOD!K3:K200)="ABC XXXX"))

「ABC XXXX」内で部分一致をフィルターする方法はありますか? ABC を場所、XXXX をその場所での職務/役職と考えてください。ABC に割り当てられた全員を新しいワークシートに引き出し、職務/役職でフィルターできるようにしたいのですが、それは可能ですか?

答え1

その方法の 1 つを以下に示します。

=LET(
     α, VSTACK(FRR:SOD!G3:M200), 
     δ, INDEX(α,,5), 
     FILTER(α, (δ<>"")*(1-ISNA(XMATCH("ABC *",δ,2))),"Not Found"))

  • 関数を使用するとLET()、変数を定義するのに役立ち、同じ数式を繰り返さずに読みやすくなります。
  • α変数は、複数のシートのデータを1つのシートに追加して、シートのVSTACK()範囲とG3:M200FRRSOD
  • δ変数は、INDEX()関数を使用し5thて返された配列から抽出するように定義されています。α
  • XMATCH()ワイルドカード演算子の使用Asterix*Zeroは、任意の数の文字を意味します。このユースケースでは、 location が使用され、配列から同じ場所に割り当てられた任意の文字で始まり、任意の文字で終わるABC *任意の場所がないかチェックします。ABCjob/positionδ
  • 一致が見つかった場合は、ISNUMBER()を返すかTRUE、を使用1-ISNA()することもできます。どちらも同じことを行います。つまり、最初にエラーが発生した場所ISNA()を返し、次に から減算して結果を得ます。これは、 で行うのと同じです。TRUE#N/ATRUEISNUMBER()
  • 最後に、FILTER()関数内でラップして、 がある場所を抽出しますTRUE

ノート:

• Excelにはワイルドカード3枚数式で使用できるもの:

  1. アスタリスク( *) --> 0 個以上の文字。
  2. 疑問符( ?) --> 任意の 1 文字。
  3. チルダ( ~) --> リテラル文字 ( ~*)、リテラル疑問符 ( ~?)、またはリテラルチルダ ( ~~) のエスケープ。

答え2

部分一致の場合、さまざまな組み合わせがあるはずですが、以下にその 1 つを紹介します。

=FILTER(VSTACK(FRR:SOD!G3:M200),
  (VSTACK(FRR:SOD!K3:K200<>"")*
  ((ISNUMBER(SEARCH("NEW*", VSTACK(FRR:SOD!K3:K200)))) +
  (ISNUMBER(SEARCH("*MANAGER", VSTACK(FRR:SOD!K3:K200)))) > 0))
  • ここで、((ISNUMBER(SEARCH("NEW*"について説明します。
  • ここで、NEW* 、、* はワイルドカード文字であり、1 文字以上を想定しています。
  • ニューデリー、ニューヨーク、ニュージャージーなどの場所を想定できます。
  • もう 1 つは (ISNUMBER(SEARCH("*MANAGER" で、*MANAGER は EDP MANAGER、SALES MANAGER などを表す場合があります。

注意

答え3

皆さんの意見に感謝します。まだ少しずつ学んでいるので、少し複雑な部分もありますが。別のフォーラムのこの式はまさに私のニーズに応え、理解しやすいものでした。

=FILTER(VSTACK(FRR:SOD!G3:M200),LEFT(VSTACK(FRR:SOD!K3:K200),3)="ABC")

あなたのすべての協力に感謝します!

関連情報