簡體   English   中英

Excel索引匹配-具有多個結果的部分字符串

[英]Excel Index Match - Partial strings with Multiple Results

我正在嘗試調整在在線示例電子表格中找到的這段代碼,但我不太了解。

原始電子表格基本上是根據用戶定義的查找執行INDEX / MATCH的,並將匹配的內容整齊地列出在串聯列表中。 示例電子表格的輸出如下所示:

http://i.stack.imgur.com/DyahB.png-Excel輸出示例(請注意,第一場和第二場比賽之間沒有間隙)

底層算法是:

=IF(ISERROR(INDEX($A$1:$B$8,SMALL(IF($A$1:$A$8=$E$1,ROW($A$1:$A$8)),ROW(1:1)),2)),"",INDEX($A$1:$B$8,SMALL(IF($A$1:$A$8=$E$1,ROW($A$1:$A$8)),ROW(1:1)),2))

現在,我希望查找取而代之的是檢索PARTIAL匹配項,此外,像這樣水平生成輸出:

http://i.stack.imgur.com/ShED0.png-根據部分匹配水平生成輸出

我不確定該怎么做。 似乎我會嘗試以某種方式嘗試更改IF條件,以在部分比賽中返回true,但我無法解決。 請幫忙!

假設“部分匹配”是指以L1的值開頭 ,然后在N1使用此公式的文本

=IFERROR(INDEX($I$2:$I$8,SMALL(IF(LEFT($H$2:$H$8,LEN($L$1))=$L$1,ROW($I$2:$I$8)-ROW($I$2)+1),COLUMNS($N1:N1))),"")

使用CTRL + SHIFT + ENTER確認並復制

要在文本中的任何位置進行匹配,可以使用此版本

=IFERROR(INDEX($I$2:$I$8,SMALL(IF(ISNUMBER(SEARCH($L$1,$H$2:$H$8)),ROW($I$2:$I$8)-ROW($I$2)+1),COLUMNS($N1:N1))),"")

這兩個公式都不區分大小寫,盡管您可以通過將SEARCH更改為FIND輕松實現后者

使用IFERROR函數意味着您不需要重復進行錯誤處理-需要Excel 2007或更高版本

在Barry的代碼上稍加構建,我需要做一些調整以供自己使用(當前正在進行的項目)。

我所做的調整:

  1. 返回與我的索引中的搜索條件匹配的單元格
  2. 使單元在二維上可拖動,因此我可以為多個列建立索引以獲取特定信息
  3. 使“第n個”計數器為垂直而不是水平(因為我的應用程序是各種各樣的數據庫,並且每一列都是一個單獨的條目。每列的頂部是基於搜索詞填充的5行[在我的情況下是商店數])

最終結果是:

=IFERROR(INDEX(A$8:A$295,SMALL(IF(ISNUMBER(SEARCH('Store History'!$F$2,A$8:A$295)),ROW(A$8:A$295)-ROW(A$8)+1),ROWS(A$2:A2))),"")

值得重復的是,這是一個數組公式,需要使用CTRL + SHIFT + ENTER輸入

它放置在單元格A2中,並且在水平和垂直方向上都進行了拖動(在我的情況下,水平擴展是在向數據庫中添加更多條目時進行的)。

我添加此評論(即使它是一個很長的不活動線程)的目的是,嘗試使它成為Google上更相關的搜索結果,以“ excel索引匹配具有多個結果的部分字符串”或其他形式。 我花了數小時的時間尋找該解決方案,並且它功能強大且優雅。 感謝OP,尤其是Barry的代碼!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM