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

时间:2015-07-01 17:30:09

标签: excel excel-formula

我在一个文件中打开了两个工作簿。我的第一本工作簿是“Trades”,第二本是“Searches”。我想在搜索列E(其中有0到50个ID;如果有超过1个ID,它们用逗号分隔)中搜索交易列A(有一个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]

非常感谢!

1 个答案:

答案 0 :(得分:0)

在单元格 sheet Trades J2中尝试此操作,然后向下复制到最后一个单元格:

=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 < / kbd> + 输入来计算公式。这是一个数组公式。然后将公式复制并拖动到 J2 的右侧,拖动它直到我们说 M2 ,然后选择 J2:M2 并向下拖动直到数据表的最后一行,但只是为了了解公式,将其复制到第100行,然后让excel计算并查看它是如何进行的。请注意,这些数组公式需要很长时间来计算!这就是为什么你需要一个vba代码来做到这一点!

但是如果每个查询的点击次数超过4次,那么你需要扩展你的公式 M2 ,也许直到Z2或其他什么,你可以确定你的最大命中率可能达到每个查询。