【问题标题】:VLOOKUP, or INDEX/MATCH?VLOOKUP,还是索引/匹配?
【发布时间】:2021-12-02 00:49:51
【问题描述】:

用表 1 上的信息填充表 2 可能是一个简单的公式,但我目前正在努力使用多个 VLOOKUP 函数。有人请支持我吗?单元格 B20 上的公式基本上是检查该日期(B19)用户(A20)是否有任何东西(A1:A13)..

【问题讨论】:

  • =IFERROR(LOOKUP(2,1/($B$1:$B$13=B$19)/($C$1:$C$13=$A20),$A$1:$A$13),"") 应该这样做。
  • Rory 太好了,运行流畅。非常感谢 :)。请问您为什么不使用 VLOOKUP 方法只是出于好奇?
  • 您希望条件左侧的值,并且您有两个条件。这使得 VLOOKUP 对我来说太复杂了。

标签: excel excel-formula vlookup


【解决方案1】:

INDEX /MATCH 对我来说似乎最合乎逻辑: =IFERROR(INDEX($A$1:$A$13,MATCH(1,($C$1:$C$13=$A20)*($B$1:$B$13=B$19),0)),"") 它索引 A 列并显示两个条件都为真 (1) 的行的值。

这将返回第一个匹配项。如果要显示多个匹配项,则应使用不同的方法,具体取决于您的 Excel 版本。

【讨论】:

  • 谢谢,非常感谢!
  • 我使用的是 Excel 2010,所以我假设没有 XLOOKUP。那么,为同一个人提取同一天的所有条目的最佳方法是什么?
  • 这将需要 TEXTJOIN,这在 excel 2010 中不可用。您需要 1) 接受它只显示 1 个结果,2) 使用 INDEX/SMALL 遍历所有可能的结果并将它们连接起来,这将大大减慢速度 3)以我们可以显示多种类型的方式重新排列输出数据。也许数据透视表可以很好地了解您想要什么。
【解决方案2】:

另一个公式可能更易于理解和操作:

=IFERROR(INDEX( $A$2:$A$14,MIN( IF(1*($B$2:$B$14=B$19)*($C$2:$C$14=$A20)=1,ROW($A$2:$A$14)-1,999))),"") 

必须在第一个单元格中输入数组(以及每次编辑后),然后复制粘贴到任何地方...(对于数组,请按 ctrl+shift+enter 而不是 enter)

还要注意

  1. 在 06/11 Julie 有 2 个条件,在两个公式中只有一个是 回来了!
  2. 在 2011 年 2 月,Toto 在您的示例 Raif 中是错误的
  3. 在 Rory 的公式中,将 2 更改为 1 将为您提供第一次遭遇,从而在 06/11 (1.) 获得 Julie 的第一个条件

【讨论】:

  • 谢谢,非常感谢!
猜你喜欢
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多