繁体   English   中英

另一个工作簿中的EXCEL搜索列(按列中的文本)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM