【问题标题】:INDEX MATCH or VLOOKUP or HLOOKUP to find match among seven non-sequential cellsINDEX MATCH 或 VLOOKUP 或 HLOOKUP 在七个非连续单元格中查找匹配项
【发布时间】:2017-12-04 22:41:50
【问题描述】:

我建立了这个 INDEX MATCH 公式,但我认为必须有一个更有效的 excel 函数来解决这个问题。

 =IF(INDEX($L3:$BA3,MATCH($H3,$L$1:$BA$1,0))>0,"CategoryGreaterThan0","CategoryIsZero")

我只在存在一个完全匹配时才使用 INDEX MATCH。正如所构建的那样,我相信——尽管不确定——这利用了 42 个单元格中的 first 匹配。但这已经是一种浪费,因为我们知道在 42 个单元中只有 7 个是我们将永远想要查看的。

因此,一个简单的 IF/THEN 函数需要引用当前行中的七个非连续单元格(并可能从第 $1 行引用七个或更多非连续单元格)。

H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   AA  AB  AC  AD  AE  AF  AG  AH  AI  AJ  AK  AL  AM  AN  AO  AP  AQ  AR  AS  AT  AU  AV  AW  AX  AY  AZ  BA
Cat_Current             Cat_A   Cat_A   Cat_A   Cat_A   Cat_A   Cat_A   Cat_B   Cat_B   Cat_B   Cat_B   Cat_B   Cat_B   Cat_C   Cat_C   Cat_C   Cat_C   Cat_C   Cat_C   Cat_D   Cat_D   Cat_D   Cat_D   Cat_D   Cat_D   Cat_E   Cat_E   Cat_E   Cat_E   Cat_E   Cat_E   Cat_F   Cat_F   Cat_F   Cat_F   Cat_F   Cat_F   Cat_G   Cat_G   Cat_G   Cat_G   Cat_G   Cat_G
Cat_A               1                       0                       3                       1                       0                       1                       2                   

我只想查看 L、R、X、AD、AJ、AP、AV 列。

$H3 将仅匹配 $L$1、$R$1、$X$1、$AD$1、$AJ$1、$AP$1、$AV$1 中的一个。
$M$1 的其余部分:$BA$1 无关紧要,$M3:$BA3 也是如此。

假设 $H3 匹配 $AD$1,
然后我检查 $AD3>0,如果为 true,则生成 "CategoryGreaterThan0",为 false 生成 "CategoryIsZero"。

是否有更智能的 Excel 函数可以只查看我想要的七个单元格,而不是全部 42 个?

【问题讨论】:

  • “不确定它是否真的正常工作” 不是问题。您希望它如何工作以及它如何以您想要的方式工作?
  • 当我知道七个特定的单元格是我唯一需要查看的地方时,我目前正在引用 42 个单元格。实现这一目标的最佳功能是什么? @A.S.H
  • 嘿@pnuts 拿回你的 -1 怎么样?
  • 非常感谢,@A.S.H.在我所在的地方有很长的路要走。

标签: excel indexing excel-formula match vlookup


【解决方案1】:

将 MOD(column_num, 6) 添加到列匹配条件。您所需的匹配列号是 12、18、24、30、36、42 和 48。任何匹配列的 MOD(column_num, 6) 为零。

=IF(INDEX($A3:$BA3, AGGREGATE(15, 6, COLUMN(L:AV)/((L1:AV1=H3)*NOT(MOD(COLUMN(L:AV), 6))), 1)),"CategoryGreaterThan0","CategoryIsZero") 

【讨论】:

  • 谢谢@A.S.H - 我很难将狗的早餐伪装成样本数据,并且不得不盲目地编写公式。我刚才又看了一遍,我相信我添加了正确的标准。
  • 不需要 INDEX,因为 OP 想要 L:AV 列中的第一个匹配项以六列交错排列。
  • 前6个是忽略错误。 MOD(COLUMN(L:AV), 6) 将为 6 列交错上的匹配列返回零; NOT 将零/假翻转为一/真。所有不返回零的列都被翻转为零,导致#DIV/0!错误(wchihc hte 前 6 个忽略)
  • 好的,我现在跟着这个。这是一个非常棒的解决方案。谢谢大家!
  • @jeeped 最好还是从 $A3 开始我的 INDEX(并在 $BA3 结束),即使我绝对不需要在 $L3 之前(或 $AV3 之后)查看?我应该将其重写为 IF(INDEX($L3:$AV3,AGGREGATE... 吗?
猜你喜欢
  • 1970-01-01
  • 2016-02-07
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多