如何组合:INDEX + MATCH + ?VLOOKUP?

Posted

技术标签:

【中文标题】如何组合:INDEX + MATCH + ?VLOOKUP?【英文标题】:How to combine: INDEX + MATCH + ?VLOOKUP? 【发布时间】:2018-08-16 07:51:39 【问题描述】:

我遇到了 INDEX + MATCH 组合的问题:

=INDEX(ALL!$C$1:$I$1,MATCH(TRUE,ALL!C2:I2<>0,0))

目前,上述公式在一定程度上完成了这项工作,如果它在一行中找到 0 值,它将从该特定列返回标题。问题是需要指定 ROW(如上 C2:I2)。

我需要在工作表“ALL”的“A”列中查找值,并在此基础上查看 C:I 之间的相应行,如果该特定行中的值是 0,则返回标题值。

因此,在绿色中,我需要一个公式来根据值 1 或任何值 0 从“数据源”标题中提取数字。我猜这一切都会以某种方式导致某种“vlookup”混合。

任何想法如何在其中结合 vlookup?

谢谢

【问题讨论】:

您能否提供一些数据输入和所需输出的示例数据?我知道你已经在问题中描述了它,但我不确定我是否理解正确(最好编辑到原始问题中) 我认为您需要澄清是否只需要查看一行或多行以及如果有多个匹配项会发生什么。 @Rawrplus - 完成。该列表是动态的并且会发生变化,因此理想情况下我们可以查看整个列。根本没有重复。 @WestRay 好多了,谢谢 如果每行只有一个“1”,您可以使用 SUMIF,您需要类似 =SUMIF(INDEX(B:E,MATCH(G2,A:A,0),0) ,">0",$B$1:$E$1) 但我没有时间把它正确地发布到以后。 【参考方案1】:

如果每行只能有一个“1”,我正在考虑这个

=SUMIF(INDEX(B:E,MATCH(G2,A:A,0),0),">0",$B$1:$E$1)

否则如果可以有多个'1'

=INDEX($B$1:$E$1,MATCH(TRUE,INDEX(B:E,MATCH(G2,A:A,0),0)>0,0))

匹配第一个大于零的值,在这种情况下作为数组公式输入。

【讨论】:

【参考方案2】:

一个简单的=SUMIF() 公式就可以了,不需要其他复杂的INDEX()MATCH() 嵌套公式。

假设我们有一个从 B2 开始并在 F6,像这样:

所以现在,为了理解解决方案,这里是SUMIF() 公式的语法(Function)

=SUMIF( range, criteria, [sum_range] )

那么,我们要做的是:

    遍历C3:F3range(以及彼此各自的行) criteria 何时求和,就是当这个range 包含1 我们想要sum_range(总结)固定的数字数组,所以$C$2:$F$2

所以结果是(对于第 3 行):

=SUMIF(C3:F3,1,$C$2:$F$2)

我们将公式向下拖动,产生预期的结果:


PS:我认为这很好地说明了这一点,为什么重要的是不仅要声明你的公式正在做什么而且还要声明你想要做的整体 因为通常有更好(更简单)的方式来实现某些东西,而您可能没有想到。

也就是说,关注Minimal, Complete and Verifiable Example

【讨论】:

嗨,我想你已经创建了一些新的数据集?另外,我没有要求“总和”,而是返回标题(即 100,200,300 或 400)。 一行中可以有多个1 吗?如果没有,那么该公式将适用于您的目的 您尝试过我最初使用的公式吗?它的问题在于它仅限于特定行(就像您提供的一样)。数据源和列表发生变化,它有 1000 行。它肯定需要 vlookup。 看上面的评论。如果每行有一个 1(不管有多少行或列),它将始终返回正确的“标题” 这行不通,对不起。每次我运行 VBA 代码等时,动物的名称都会在列表中更改顺序(随机)。您的假设是静态的。这就是我的公式所遇到的问题(它已经以与您的解决方案相同的方式起作用)。需要 vlookup /or/ index /or/ match /or/ 很可能所有这些都在一起。

以上是关于如何组合:INDEX + MATCH + ?VLOOKUP?的主要内容,如果未能解决你的问题,请参考以下文章

wps 如何通过公式条件引用数据?

index函数

应用 IF 而不是 MATCH 时如何使用 INDEX?

Excel - VLOOKUP 与 INDEX/MATCH - 哪个更好?

excle 函数的使用

查询好搭档:INDEX+MATCH 函数