使用帶有過濾器和 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

這是一種方法:

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

  • 使用LET()函數有助於定義變量,並且更容易閱讀,而無需重複相同的公式。
  • α變數被定義為使用VSTACK()它將多個工作表資料附加到一個由G3:M200工作表FRRSOD
  • δ變數被定義為使用函數從返回的數組中INDEX()提取5thα
  • XMATCH()與通配符運算子一起使用Asterix*表示Zero任意數量的字元。在此用例中,它使用位置並檢查以數組中相同位置分配的ABC *任何位置開頭ABC和結尾的任何位置。job/positionδ
  • 如果找到匹配項,那麼我們可以使用ISNUMBER()returnTRUE1-ISNA()也可以使用它來執行相同的操作,即首先ISNA()返回TRUE錯誤,#N/A然後從結果中減去,TRUE這與使用相同ISNUMBER()
  • 最後,包裝在FILTER()函數中以提取存在的位置TRUE

筆記:

• Excel 有3 個通配符可以在您的公式中使用:

  1. 星號( *) --> 零個或多個字元。
  2. 問號( ?) --> 任一個字元。
  3. 波形符( ~) --> 文字字元 ( ~*)、文字問號 ( ~?) 或文字波形符 ( ~~) 的轉義。

答案2

Partial Match 的組合應該有很多種,,,,以下是我想跟大家分享的一種。

=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*、、*是Wild Card字符,假設多個字符。
  • 它可能假設新德里、紐約、新澤西等地點。
  • 另一個是 (ISNUMBER(SEARCH("*MANAGER" ),其中 *MANAGER 可能擔任 EDP 經理、銷售經理等。

注意

  • 您可以使用其他通配符 根據需要。

  • 另外檢查此連結

答案3

我感謝每個人的意見,儘管其中一些有點複雜,因為我仍在一點一點地學習。來自另一個論壇的這個公式完全符合我的需要,並且對我來說很容易理解:

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

感謝你的幫助!

相關內容