在多列中搜索值并连接单元格的地址

时间:2014-11-13 17:08:12

标签: excel

我现在已经打破了这个公式。我找到了一个太大而且每次都不方便使用的解决方案。那么任何Excel Expert都可以给我一个解决方案/建议吗?

A列包含150个值。列D到R包含一个表,我需要在其中逐个查找A中的值。我想返回包含该值的所有单元格的地址。

例如,A2中的值出现在单元格D5E15H10R3中,那么我的结果应为D5,E15,H10,R13

请注意,某些列可能不包含A2的值,我不希望它们显示。

这是我写的公式:

=CONCATENATE(
IF(A2=IF(COUNTIF(D:D,A2),VLOOKUP(A2,D:D,1,FALSE),""),ADDRESS(MATCH(A2,D:D,0),4,4),0),",",
IF(A2=IF(COUNTIF(E:E,A2),VLOOKUP(A2,E:E,1,FALSE),""),ADDRESS(MATCH(A2,E:E,0),5,4),0),",",
IF(A2=IF(COUNTIF(F:F,A2),VLOOKUP(A2,F:F,1,FALSE),""),ADDRESS(MATCH(A2,F:F,0),6,4),0),",",
IF(A2=IF(COUNTIF(G:G,A2),VLOOKUP(A2,G:G,1,FALSE),""),ADDRESS(MATCH(A2,G:G,0),7,4),0),",",
IF(A2=IF(COUNTIF(H:H,A2),VLOOKUP(A2,H:H,1,FALSE),""),ADDRESS(MATCH(A2,H:H,0),8,4),0),",",
IF(A2=IF(COUNTIF(I:I,A2),VLOOKUP(A2,I:I,1,FALSE),""),ADDRESS(MATCH(A2,I:I,0),9,4),0),",",
IF(A2=IF(COUNTIF(J:J,A2),VLOOKUP(A2,J:J,1,FALSE),""),ADDRESS(MATCH(A2,J:J,0),10,4),0),",",
IF(A2=IF(COUNTIF(K:K,A2),VLOOKUP(A2,K:K,1,FALSE),""),ADDRESS(MATCH(A2,K:K,0),11,4),0),",",
IF(A2=IF(COUNTIF(L:L,A2),VLOOKUP(A2,L:L,1,FALSE),""),ADDRESS(MATCH(A2,L:L,0),12,4),0),",",
IF(A2=IF(COUNTIF(M:M,A2),VLOOKUP(A2,M:M,1,FALSE),""),ADDRESS(MATCH(A2,M:M,0),13,4),0),",",
IF(A2=IF(COUNTIF(N:N,A2),VLOOKUP(A2,N:N,1,FALSE),""),ADDRESS(MATCH(A2,N:N,0),14,4),0),",",
IF(A2=IF(COUNTIF(O:O,A2),VLOOKUP(A2,O:O,1,FALSE),""),ADDRESS(MATCH(A2,O:O,0),15,4),0),",",
IF(A2=IF(COUNTIF(P:P,A2),VLOOKUP(A2,P:P,1,FALSE),""),ADDRESS(MATCH(A2,P:P,0),16,4),0),",",
IF(A2=IF(COUNTIF(Q:Q,A2),VLOOKUP(A2,Q:Q,1,FALSE),""),ADDRESS(MATCH(A2,Q:Q,0),17,4),0),",",
IF(A2=IF(COUNTIF(R:R,A2),VLOOKUP(A2,R:R,1,FALSE),""),ADDRESS(MATCH(A2,R:R,0),18,4),0))

正如我所说,这是有效的,但我正在寻找一个更简单,更小的公式。

提示:也许使用数组有帮助吗?

提前致谢:)

1 个答案:

答案 0 :(得分:0)

你想要完成的东西并不适合Excel公式,但它可以用一个更小,更简单的公式来完成,这个公式被拖过15列而不是一个巨大的复杂公式,它试图一次完成所有事情。

假设A列有150个值(从A1到A150),并且有一个表从D1到R50 ......

  1. 在T1中输入=S1&IFERROR(","&ADDRESS(MATCH($A1,D$1:D$50,0),COLUMN(D1)),"")
  2. 将公式拖到AH1。
  3. 在AI1中输入=RIGHT(AH1,LEN(AH1)-1)
  4. 选择T1至AI150并按Ctrl-D。
  5. 列AI1将包含您要查找的结果。

    这是如何运作的?

    • T1中的公式以左边一个单元格的结果(空白)开始。然后它将它与D列中第一个匹配的地址连接起来(以逗号为前缀)。如果没有匹配,则只是连接空白(“”)。当您将此公式拖到右侧时,它会在匹配出现时保持连接地址(如果没有,则保持空白)。当你走到最后,你将在你的桌子的所有15列中寻找匹配。
    • AI1中的公式只是删除了初始逗号(如果有的话)。