![](/img/trans.png)
[英]Excel Macro to search Text in column A and copy adjacent cell from column B to another workbook
[英]EXCEL Search Column in another Workbook by Text in Column
我在文件中打開了兩個工作簿。 我的第一個工作簿是“交易”,第二個是“搜索”。 我想搜索“交易”的A列(有一個ID),而不是“搜索的E列”(有0到50個ID;如果有超過1個ID,則用逗號隔開)。 因此,從本質上講,我想知道是否已搜索“交易” A列的ID。
我嘗試使用:
=COUNTIF(Searches!E:E,"*Trades!A1:A11412*")
和
=COUNTIF(Searches!E:E,Trades!A:A)
和
=LOOKUP(REPT("z",255),CHOOSE({1,2},"ANOTHER VALUE",LOOKUP(1000,FIND($E$1:$E$11412,Trades!A:A),$E$1:$E$11412))) [The data is rows 1 - 11412]
非常感謝!
在單元格J2
中的sheet Trades
中嘗試此操作,並向下復制直到最后一個單元格:
=IF(ISNA(LOOKUP(2^15,FIND(A2,Searches!$E$2:$E$2000),Searches!$E$2:$E$2000)),"NOT FOUND","FOUND")
讓我知道這是否是您想要的。
它在這里: 它返回行號 :
=MATCH("*"&A2&"*",Searches!$E$1:$E$2000,0)
您可以像這樣將兩者結合起來,如果找到,它將為您提供行號,如果找不到,它將返回“ NOT FOUND”:
=IF(ISNA(LOOKUP(2^15,FIND(A2,Searches!$E$1:$E$2000),Searches!$E$1:$E$2000)),"NOT FOUND",MATCH("*"&A2&"*",Searches!$E$1:$E$2000,0))
讓我知道它是否仍然適合您。
實際上,您最好使用VBA代碼而不是公式。 但是,這里是返回查詢的所有匹配的公式。
=IFERROR(INDEX(ROW(Searches!$E$2:$E$2000),SMALL(IF(ISNUMBER(FIND($A2,Searches!$E$2:$E$2000)),ROW(Searches!$E$2:$E$2000)-ROW(Searches!$E$2)+1),COLUMNS($L2:L2))),"")
在交易表的J2中嘗試此操作,然后按ctrl + shift + enter計算公式。 這是一個數組公式。 然后將公式復制並拖動到J2的右側,將其拖動到M2 ,然后選擇J2:M2並將其向下拖動到數據表的最后一行,但這只是為了了解該公式,將其向下復制到第一百行,然后讓excel計算並查看運行情況。 請注意,這些數組公式需要很長時間才能計算出來!!! 這就是為什么您需要一個vba代碼來做到這一點的原因!
但是,如果每個查詢的命中數超過4,則需要將公式擴展到M2 ,直到Z2之類的東西,然后由您來確定每個查詢可能達到的最大命中數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.