我按了一下空格,竟发现了交叉查询最简单的一种方法……

哈喽,大家好呀!今天我们的话题是交叉查询。

什么是交叉查询呢?我们先来看一个例子:

在表格中,我们安排了 50 名同学组成了一个方阵,这个方阵一共有 5 列纵队,10 排横队。

现在,只要教官喊出排数和列数,相应的同学就要高声答「到」。

比如教官喊道:「第 4 排第 3 列」!

「到!」施美丽同学大声喊道。

这就是一个典型的交叉查询问题。

那么,如何在表格中根据行列标题快速查询出结果呢?

通常情况下,大家的第一反应是使用函数嵌套公式来完成。

常用的公式组合有以下四种:难道就没有简单一点的方法吗?

诶嘿,还真有!

只需要两步,不需要复杂的函数公式,一个空格就能搞定。

vlookup+match

公式如下:

=VLOOKUPI3,A2:F11,MATCHI2,A1:F1,0))

index+match

公式如下:

=INDEXB2:F11,MATCHI3,A2:A11,0),MATCHI2,B1:F1,0))

offset+match

公式如下:

=OFFSETA1,MATCHI3,A2:A11,0),MATCHI2,B1:F1,0),1,1)

indirect+match

公式如下:

=INDIRECT"R"&MATCHI3,A1:A11,0)&"C"&MATCHI2,A1:F1,0),FALSE)

是不是觉得头很大?这些公式一个比一个长,一个比一个复杂!

01、批量命名

首先给方阵的每排每列都取一个名字,常规的命名方法是选中对应的行或列,然后在名称框输入一个名字,如下图:

但是,这么多的行和列,逐一设置太麻烦了,我们用更简单的方法:

❶ 选中整个表格区域(包括行列标题)。

❷ 点击公式选项卡中的「根据所选内容创建」按钮。

❸ 确认首行和最左列复选框打勾,点击确定。

这样,我们就完成了批量命名。

在公式选项卡的【名称管理器】中,我们可以查看这些名字和对应的引用区域。

02、编写公式

太神奇了!

相信不用我多说,你也能发现,这个公式究竟有多么简单。

输入等于号,再输入对应的行和列的名称,两个名称之间敲一个空格,公式就写好了。

注意:在函数公式中,和冒号一样,空格也是一种引用符号。与冒号不同的是,冒号引用的是两个单元格之间的区域;而空格,引用的是两个区域相互重合的部分。

好了,到这里,我们已经基本上完成了交叉查询的任务了。

不过还有一点缺憾:现在的行列名,都是手工输入的,离我们最开始展示的效果,还差一点点。

我们再尝试一下,使用单元格引用来输入这个公式:

输入等于号,点击上方的列名称单元格,敲一下空格,再点击行名称单元格,按下回车键。

很遗憾,我们翻车了!

为什么手动输入行列名称可以成功,直接引用单元格内容却失败了呢?

因为手写输入的时候,公式会将这些名称识别为我们命名的区域;而直接引用单元格,公式会把这些名称识别为文本。

所以,这里我们还缺少一个关键要素,它是一个函数,你能猜出来是什么函数吗?

不卖关子了!我们缺少的,正是 indirect 函数。

indirect 函数可以将文本转换为一个指定的引用。

用人话解释,就是 indirect 函数可以将文本转换为一个地址(前提是地址有效),因为我们一开始就对每行和每列都进行了命名,所以这些地址都是有效的,我们只需要用 indirect 函数来引用这些地址名称,就可以发挥他们真正的效用了。

所以,这个公式我们还要稍加修改。

非常简单,只需要在两个单元格前面,分别加上 indirect 函数,就可以了。

怎么样,你学会了吗?

03、写在最后

我们最后再把所有 5 种交叉查询的方法都列示出来:

vlookup+match

公式如下:

=VLOOKUPI3,A2:F11,MATCHI2,A1:F1,0))

index+match

公式如下:

=INDEXB2:F11,MATCHI3,A2:A11,0),MATCHI2,B1:F1,0))

offset+match

公式如下:

=OFFSETA1,MATCHI3,A2:A11,0),MATCHI2,B1:F1,0),1,1)

indirect+match

公式如下:

=INDIRECT"R"&MATCHI3,A1:A11,0)&"C"&MATCHI2,A1:F1,0),FALSE)

批量命名 + indirect

公式如下:

=INDIRECTI2) INDIRECTI3)

要用哪一种,就由你来决定咯!

本文来自微信公众号:秋叶 Excel (ID:excel100),作者:张开元  编辑:竺兰

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注