📌  相关文章
📜  在 Excel 中查找第二个、第三个或第 N 个值

📅  最后修改于: 2021-09-23 04:53:16             🧑  作者: Mango

Excel 是关于数据管理和数据利用的。但是,在 Excel 数据集中很多次,您一定已经注意到,一个参数有 2 个或 2 个以上的值。因此,为了查看(或仅使用第一个分配的值),我们使用 VLOOKUP、INDEX 等函数。

但是,在现实生活中,您可能想要查看(使用)第 2、第 3 个,甚至将其推广到第 N 个值。因此,要做到这一点,我们有两种方法可以查看超过一阶的值。

这些方法是:

  1. 辅助公式
  2. 数组公式

让我们来看看第一种方法。

辅助方法:

为便于理解,我们将看到上述数据集。在 A 列和 B 列中,给出了注册科目,但如果仔细观察,Akash 和 Naina 以及 Jim 注册了 1 个以上的科目。在 G、H、I 列中:条目已完成,但这次我们必须以水平方式填写数据(即学生选择的科目)。因此,如果我们使用 VLOOKUP 和 INDEX 等方法,输出将与预期不同,即它们将获取重复参数的唯一第一个值,例如,如果我们应用 VLOOKUP OR INDEX函数,它只会填充英文作为他的题,这是错误的。因此,我们需要将其升级到第 2、第 3 甚至第 N 个值窥视。

因此,要做到这一点,请在该列之前插入一个空白列,其中包含重复的参数值。

在单元格B2中,写下以下公式-

=A2&COUNTIF($A$2:$A2,A2)

‘=’ 表示 excel 前面的一切都是一个公式,需要进行评估。现在,这个函数会做什么?它基本上会命名每个参数(这里是列名称),将为每个参数提供唯一且递增的数字,因此它看起来像:

在这里,我们在上面的公式中使用 COUNTIF 为每个唯一的增加给出了每个参数,并使用上面的公式将其嵌入到单元格 B 中。

现在,在单元格 H2 中,嵌入以下公式-

=IFNA(VLOOKUP($G2&COLUMNS($H$1:H1),$B$2:$C$10,2,0),"")

输出将是这样的:

这里$G2&COLUMNS($H$1:H1)是查找或查看多个值的值查找器。

阵列方法:

现在,当您的要求是不更改或更改原始数据集时,此方法非常有帮助,例如添加一些额外的(辅助)列。

提醒– 要执行包含数组的公式,您需要按 Ctrl+Shift+Enter 键,而不是只按 Enter 键。

我们将考虑与辅助列示例中使用的相同的数据集。

现在,我们将考虑公式,并逐个理解它,公式是如何工作的——

=IFERROR(INDEX($B$2:$B$10,SMALL(IF($A$2:$A$10=$D2,ROW($A$2:$A$10)-1,""),COLUMNS($E$1:E1))),"")

此公式将粘贴到 E2 列中。

现在,将公式分解成部分,我们将理解$A$2:$A$10=$D2。

这个公式是在一个范围内进行比较,我们提供了 A2 到 A10,然后将它与 D2 进行比较。

由此返回的数组将包含 TRUE 或 FALSE 值。将此公式应用于单元格 E2 时,返回的数组将为:

{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}

这里。参数“Akash”的计数完成。仔细查看返回的数组,无论名称 Akash 在哪里,输出都是 TRUE。例如,我们将比较范围从 A2 到 A10,因此在此列范围中,第 1、第 4 位由参数 Akash 填充。

现在这个公式的第二个重要部分是:

IF($A$2:$A$10=$D2, ROW($A$2:$A$10)-1,""

这部分做的,基本上是对上面公式的一个修饰,这个公式也会打印一个数组,但是这一次,只要匹配到需要的参数,就不会打印出TRUE值,而不是那个出现的位置参数将被打印,对于 FALSE 值,我们只打印一个“”,所以对于上面的例子,我们在搜索参数 Akash 的地方,这种格式的数组将是——

{1;"";"";"";4;"";"";"";""}

现在,这个公式的第三个重要部分是:

SMALL(IF($A$2:$A$10=$D2,ROW($A$2:$A$10)-1,""),COLUMNS($E$1:E1)))

现在,这个函数将选取第一个最小的,第二个最小的,依此类推,如果出现超过 2 次,它将把它们放在正确的列中,例如,在我们右侧的数据集表中,在单元格 E2 中,值 1 将由 COLUMN FUNCTION 和 SMALL FUNCTION 返回。但是,在 F2 列中,COLUMN FORMULA 将返回值 2,但 SMALL函数将返回值 4,因为它是 Akash 的第二次出现值。

现在,这个公式的第三个重要部分是:

(INDEX($B$2:$B$10,SMALL(IF($A$2:$A$10=$D2,ROW($A$2:$A$10)-1,""),COLUMNS($E$1:E1)))

现在,INDEX 值又是一个值返回函数,如 COLUMN AND SMALL。但是INDEX值的不同之处在于它将返回该参数的相应值,填充在B2列中,因此,例如,在E2列中它将填充值English而在单元格F2中,它将值Mathematics。

IFERROR函数将打印一个空格,以防 INDEX函数无法打印值。

数组方法的输出将保持不变,只是您不需要添加任何额外的列并相应地应用公式。