excel 不同单元位置的Vlookup

uoifb46i  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(131)

我尝试对不同行中的目标数据执行Vlookup
但不幸的是,我找不到方法。
VlookupHlookup无法正确获取目标数据。
你能给个建议吗?
资源数据表

结果输出(预期)

匹配ID号由这些目标数据组成。

disbfnqx

disbfnqx1#

你在VLookup()HLookup()上走错了路。
请尝试使用此:(为便于阅读,多行显示)

=TEXTJOIN(",",
          TRUE,
          IF(NOT(ISBLANK(I3)),"POWER", ""),
          IF(NOT(ISBLANK(K3)),"MB", ""),
          IF(NOT(ISBLANK(M3)),"ANT", "")
         )

让我解释一下:

  • TextJoin()根据以下条件连接信息:
  • ",":要使用的分隔符
  • TRUE:如何处理空单元格
  • 要连接的参数
  • IF(NOT(ISBLANK(I3)),"POWER", ""):如果填写了I3,则需要填写单词"POWER",如果没有填写,则填写空字符串。

你在找这样的东西吗?

ru9i0ody

ru9i0ody2#

对......所以,这在技术上符合你的要求。但我怀疑这可能不完全是你真正想要的。恐怕你原来的问题很不清楚,我不得不作出一些猜测/假设。

=CONCAT(
    IF(INDEX($H$3:$H$5,MATCH($A11,$A$3:$A$5,0))<>"",$G$1 & ", ",""),
    IF(INDEX($J$3:$J$5,MATCH($A11,$A$3:$A$5,0))<>"",$I$1 & ", ",""),
    IF(INDEX($L$3:$L$5,MATCH($A11,$A$3:$A$5,0))<>"",$K$1 & ", ","")
)

CONCAT函数只是将字符串一个接一个地加在一起,在它里面,我们为每个合并的列标题都有一个公式。

  • 请注意:如果你有很多列标题,这可能不是一个可行的解决方案。然而,创建一个公式来处理动态数量的标题会复杂得多,我建议重新组织你的数据,以允许使用一个更简单的公式代替。*

所以,内在的公式:

IF(INDEX($H$3:$H$5,MATCH($A11,$A$3:$A$5,0))<>"",$G$1 & ", ",""),

VLOOKUP类似,INDEX/MATCH返回特定ID编号的POWER参考编号。如果没有参考编号,则返回空字符串。如果有参考编号,则返回后面的逗号和空格。
对每个Ref列重复此操作,然后CONCAT将所有结果粘在一起,但这会留下一个尾随逗号,如果需要的话,可以相对简单地删除它,我将把它留给您自己解决。
至于返回参考号本身,可以用同样的方法完成,但不是返回标题,而是重复INDEX/MATCH公式:

=CONCAT(
    IF(INDEX($H$3:$H$5,MATCH($A11,$A$3:$A$5,0))<>"",INDEX($H$3:$H$5,MATCH($A11,$A$3:$A$5,0)) & ", ",""),
    IF(INDEX($J$3:$J$5,MATCH($A11,$A$3:$A$5,0))<>"",INDEX($J$3:$J$5,MATCH($A11,$A$3:$A$5,0)) & ", ",""),
    IF(INDEX($L$3:$L$5,MATCH($A11,$A$3:$A$5,0))<>"",INDEX($L$3:$L$5,MATCH($A11,$A$3:$A$5,0)) & ", ","")
)
    • 为什么不使用VLOOKUP?**您可能会想知道为什么我使用INDEX/MATCH公式,而不是VLOOKUP公式。VLOOKUP可以工作,但是,INDEX/MATCH在各个方面都更好。据我所知,从来没有VLOOKUP是更好的选择的情况。
  • INDEX/MATCH更快。当您有成百上千个公式时,通常只需交换出所有的VLOOKUP,就可以大幅提高工作簿的速度。
  • INDEX/MATCH的用途更广泛。它可以用于行或列,查找范围可以是任何位置。您甚至可以使用INDEX/MATCH/MATCH在二维表格中查找值。
  • INDEX/MATCH更稳定。移动或重新排序列不会破坏公式。
  • INDEX/MATCH更容易使用。如果你习惯了VLOOKUP,它可能看起来很混乱,但是一旦你理解了它,它实际上更容易使用,因为你可以直接引用范围,而不是计算列数。

相关问题