2015-08-24 52 views
0

我有一個〜50k行的電子表格;其中一列有說明。我想用多個通配符過濾描述列。這顯然是Excel中的破解者。我用類似於以下和最終結果是單獨每每個標準排序的碼:替代通配符搜索多個條件; vba-excel

Sub Product_Sort() 

ActiveSheet.Range("$A$1:$J$47853").AutoFilter Field:=10, Criteria1:= _ 
Array("=*ProductA*", "=*ProductB*", "=*ProductC*", "=*ProductD*"), Operator:=xlOr 

End Sub 

最後,還有一些需要被搜索87個通配符標準。

我想我已經想過一個替代方案...使用現有的排序過濾器,併爲數組中的每個搜索添加一個「x」到End(xlToRight)+1列。問題是我不太瞭解循環來完成這項工作。

有人能幫我解決這個爛攤子嗎?另外,如果這個過程還有其他替代方案,那麼您可以啓發我。


編輯20150825,08:21CDT

的數據,我與有大串的工作可能包含術語相匹配,與EG1產品A的問題是小工具,EG2 ProductC有褲子或eg3有人扔掉了ProductF。在我的數據中有~50K行有這樣的條目。

在上面的示例中,根據初始代碼,我只搜索ProductA,ProductB,ProductC和ProductD;這將僅給出與例如1和例2的通配符匹配的結果,對於例3可能具有#N/A或#Value。

在嘗試總和,匹配和vlookups,我似乎無法找到一種方法來單個條款是我的數組中的通配符(例如ProductC)。我嘗試了一個類似於這樣的VLookUp:它真的給了我不一致的信息。我碰到了他們本不該去的地方。

希望能夠爲此問題增加更多信息。

我試過使用http://www.excelguru.ca/forums/showthread.php?270-vLookup-with-wildcards-%28equivalent-of-quot-contains-quot-%29-best-solution,似乎無法得到sum/iferror字符串爲我平移。

+0

我想你可以創建一個包含所有過濾器中的一列的工作表,然後使用引用該列的查找公式創建一個輔助列。然後過濾掉。 – Kyle

+0

我正在嘗試,似乎無法使其工作。讓我試着在問題中發佈一個數據的例子。 – Cyril

回答

0

把所有的通配符在一列上的另一個片材和使用以下公式:

=LARGE(IFERROR(MATCH("*"&Sheet2!A$1:A$4&"*",A2,0),0),1) 

確認與CTRL + SHIFT +輸入數組公式。 1表示匹配,0表示不匹配。

Sheet2!A $ 1:A $ 4是包含通配符的範圍,A2是包含要檢查的字符串的當前單元格。您可以自動填充到列的其餘部分。

+0

我想弄清楚爲什麼我會得到零。不熟悉大型遊戲,所以在繼續前進之前試圖瞭解發生了什麼。現在,當使用我的表時:= LARGE(IFERROR(MATCH(「*」&Sheet1!A $ 1:A $ 38&「*」,J2,0),0),1)電子表格是一個導出和autonamed表,所以我的'添加'與通配符列表在Sheet1上。 – Cyril

+0

我認爲問題的一部分是匹配具有數組的查找值,它試圖匹配我的值。我改變了順序,看它是否有助於它看起來像這樣:= LARGE(IFERROR(MATCH('query_export_results(1)'!J2,「*」&Sheet1!A $ 1:A $ 38&「*」,0), 3),1)大函數似乎可以獨立工作,但我遇到了IfError部分的問題。我通過將IfError的值更改爲3來進行檢查,並且它在全局顯示,之前列出了0,這也是沒有匹配的情況。試圖找出IfError的錯誤是什麼,atm。 – Cyril

+0

原始公式是正確的。您需要在'MATCH'部分的''「''的兩個實例之間放置'*'。 – Kyle