当前位置:首页 > 教育资讯

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

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

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

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

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

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

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

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

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

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

诶嘿,还真有!

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

vlookup+match

公式如下:

=VLOOKUP(I3,A2:F11,MATCH(I2,A1:F1,0))

index+match

公式如下:

=INDEX(B2:F11,MATCH(I3,A2:A11,0),MATCH(I2,B1:F1,0))

offset+match

公式如下:

=OFFSET(A1,MATCH(I3,A2:A11,0),MATCH(I2,B1:F1,0),1,1)

indirect+match

公式如下:

=INDIRECT("R"&MATCH(I3,A1:A11,0)&"C"&MATCH(I2,A1:F1,0),FALSE)

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

01、批量命名

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

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

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

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

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

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

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

02、编写公式

太神奇了!

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

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

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

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

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

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

很遗憾,我们翻车了!

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

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

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

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

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

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

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

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

怎么样,你学会了吗?

03、写在最后

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

vlookup+match

公式如下:

=VLOOKUP(I3,A2:F11,MATCH(I2,A1:F1,0))

index+match

公式如下:

=INDEX(B2:F11,MATCH(I3,A2:A11,0),MATCH(I2,B1:F1,0))

offset+match

公式如下:

=OFFSET(A1,MATCH(I3,A2:A11,0),MATCH(I2,B1:F1,0),1,1)

indirect+match

公式如下:

=INDIRECT("R"&MATCH(I3,A1:A11,0)&"C"&MATCH(I2,A1:F1,0),FALSE)

批量命名+indirect

公式如下:

=INDIRECT(I2)INDIRECT(I3)

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

本文来自网络,不代表教育资讯立场,转载请注明出处。