一、问题的提出

在Excel群里有人提出这样一个问题,如何实现拖动查找G列人名不同月份的工资。

问题的提出

群里进行了热烈的讨论,最终确定了三种方法,记录下来,以备后续学习巩固。

二、问题的解决

1. index+双match法

这种方法是依托index函数,通过查找指定数据对应工资的行列坐标来锁定数据。

我们可以在H2中输入下面的公式:

=INDEX($B$2:$E$9,MATCH($G2,$A$2:$A$9,0),MATCH(H$1,$B$1:$E$1,0)) 

公式中使用了 INDEX 和 MATCH 函数的组合来从数据区域中找到特定的值。以下是公式中每个部分的详细解释:

1) INDEX 函数

语法:INDEX(数据区域, 行号, 列号)

这里的 INDEX($B$2:$E$9, row_num, column_num) 从区域 $B$2:$E$9 中,根据给定的行号 (row_num) 和列号 (column_num),返回该位置的单元格值。

2)MATCH($G2, $A$2:$A$9, 0)

作用:找到 $G2 的值在 $A$2:$A$9 区域中的位置,并返回相对行号。

MATCH 函数在 $A$2:$A$9 区域中查找与 $G2 值相同的单元格,返回匹配项的相对位置(第几行)。

0 表示精确匹配,如果没有找到完全匹配的值,MATCH 将返回错误。

3)MATCH(H$1, $B$1:$E$1, 0)

作用:找到 H$1 的值在 $B$1:$E$1 区域中的位置,并返回相对列号。

MATCH 函数在 $B$1:$E$1 区域中查找与 H$1 单元格值相同的列位置。

0 表示精确匹配,返回该值在 $B$1:$E$1 中的相对列号。

整体公式的工作原理

INDEX 使用 MATCH($G2, $A$2:$A$9, 0) 得到的行号,以及 MATCH(H$1, $B$1:$E$1, 0) 得到的列号,从 $B$2:$E$9 区域中返回相应的单元格值。

简而言之,公式查找 $A$2:$A$9 中与 $G2 匹配的行,以及 $B$1:$E$1 中与 H$1 匹配的列,返回 $B$2:$E$9 区域中对应行和列的交叉单元格值。

2. 双filter法

公式是:

=FILTER(FILTER($B$2:$E$9,($A$2:$A$9=$G2)),$B$1:$E$1=H$1,"")

效果图

使用了嵌套的 FILTER 函数来从数据区域中筛选出特定条件的值。以下是公式中各部分的含义:

1)内层 FILTER($B$2:$E$9, ($A$2:$A$9 = $G2)):

从区域 $B$2:$E$9 中筛选出 $A$2:$A$9 中与 $G2 相等的行。只保留这些符合条件的行。

2. 外层 FILTER(..., $B$1:$E$1 = H$1, ""):

在前一步筛选出的数据中,进一步筛选出 $B$1:$E$1 中与 H$1 匹配的列。如果没有匹配值,返回空字符串 ""。

总结该公式的作用是:

首先筛选出 $A$2:$A$9 区域中与 $G2 匹配的行。

然后在这些行中,筛选出 $B$1:$E$1 中与 H$1 匹配的列。

最终返回符合行和列条件的单元格值。

3. vlookup法

根据vlookup的用法,如果使用vlookup函数,查找值($G2)必须在数据区域的第一列(也就是 $A$2:$A$9)。

VLOOKUP 的结果列(H$1 表头对应的列)在查找列右侧。

=VLOOKUP($G2, $A$2:$E$9, MATCH(H$1, $B$1:$E$1, 0) + 1, FALSE)

公式解释:

$G2 是查找值,即目标行值。$A$2:$E$9 是包含查找列和数据的区域。

MATCH(H$1, $B$1:$E$1, 0) + 1 计算出 VLOOKUP 中结果列的索引。

+1 是因为 VLOOKUP 区域从 $A 列开始,而 MATCH 只包含 $B$1:$E$1。

FALSE 表示精确匹配。

三、学后总结

1. 灵活使用vlookup, index+match, filter函数可以实现多条件的一键查找功能。

2. 以上方法,通过wps验证成功。2019版Excel可能不支持filter函数,建议大家使用wps来测试。

3. 补充:利用双match法做下面的题:

双match法做题

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐