首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

if({1},区域)与if(1,区域),if({0,1}与if({1,0}怎么理解?

Excel中的公式是变化多端的,但是最重要的还是对于基本知识的要足够的扎实,才能活学活用。些公式中经常会出现一些奇怪的公式,比如说:

这些公式中的部分经常不会单独使用,而是与其他的某一类的公式是联合使用的。

那这些公式都是什么意思,如何理解?

1、关于IF函数

关于if函数的基本的语法与参数的介绍不是本文介绍的重点。

这里我们来讨论一下关于真值的问题,众所周知,if函数的可以返回2个值,条件为真时与为假时分别返回一个值。

函数中的真值的定义是这样的:

真值是不区分大小的(除0外),即不等于0的任何数。

所以,当你输入以下的这样的公式的时候,还能返回正确的结果:

从上面的这个例子中,我们可以看到:

等式1为真值,所以返回第1个参数为5,等式2为非真值,所以返回3.等式中的第1个参数可以是不为0的任何的数,结果都返回5.

等式3与等式4,同上面的例子一样,因为是真值,所以结果也是一样的。但是不同的,等式3与等4中的和返回的是一个数组。如果我们将公式抹黑后,按F9键就可以发现。等式3与等4的结果不一个数组,结果为。

2、实例导入

首先来看一个实际的案例,我们将从这个实际的例子来出发,学习if(,区域)与if(1,区域)的不同。

问题是计算指定姓名的的“合计”的最大值是多少。

首先输入公式:

{=MAX(VLOOKUP(T(IF(1,$G$4:$G$6)),$A$1:$E$19,5,0))}

按三键完成后。

从返回结果16来检查一下,很明显这个结果是错误的。究其原因是什么,因为VLOOKUP的第一个参数是不支持数组的。所以只返回了张三3对应的值。

那下面我们将公式进行修改,强调将VLOOKUP的第一个参数写成数组型的:

{=MAX(VLOOKUP(T(IF(1,{"张三3","张三10","张三15"})),$A$1:$E$19,5,0))}

三键后结果返回20.是正确的,但是这样很麻烦,如果有很多个的时候,是及其不方便的。

故有下面的公式:

{=MAX(VLOOKUP(T(IF(,$G$4:$G$6)),$A$1:$E$19,5,0))}

从公式1与公式3来看,一个是 ,一个是 ,那这两个到底有什么不同呢?

下面我们来具体地讨论一下。

3、if(,区域)与if(1,区域)

,这个是指第一个参数为1时,也就是真假,告诉if返回真值的类型是单元格区域 的引用。这里面省略了if函数的第三个值,即逻辑假时返回的值,那么默认会返回为 .所以上述的公式1中的这部分返回了一个单元格的引用区域,VLOOKUP只能查找第一个单元格的位置对应的值。

如果将这个公式 中的第一个参数修改为任何非0的数时都是成立的。而 这个时候就会返回FALSE,因为第1个参数为0时,是逻辑假 ,所以会返回逻辑假对应的值,这里省略了,所以会返回FALSE.

,这个是指第一个参数为时,是告诉后面的 或如有第三个参数,是一个数组,是可以自动扩展的,并且将扩展为与后面的两个参数同等尺寸的数组,然后进行真假判断后再返回一个新的数组。

例如, 中的将会扩展成与 同等的尺寸,即 ,而 会扩展成数组 然后再进行判断后重构一个数组。

前面讲过 这是一个真假,所以自动扩展后 再进行判断,全为真,所以得到数组 。

所以回到实际的例子中,原公式就可以写成:

{=MAX(VLOOKUP(T(IF(1,{"张三3","张三10","张三15"})),$A$1:$E$19,5,0))}

这个例子经常与N函数或T函数与其他函数配合使用。

4、if(,区域,区域)与if(,区域,区域)

,这个套路经常用于VLOOKUP的反向(也叫逆向)查询过程中。其原理与上述的是一样的,都是数组重构的过程。

首先我们从一个实例,来看这个问题,查找每个姓名对应的A类型的值。

公式可以写成:

=VLOOKUP(F3,IF(,$A$2:$A$6,$D$2:$D$6),2,0),按三键结束后向下填充。

这里的是一个水平数组,而  、 分别是垂直数组。

先来看一下,数组重构的过程,首先 会自动扩展成一个与  、 相关尺寸的数组(前提是这两个区域的尺寸大小是一致的),而  会扩展成 ,  会扩展成 。

接下来进入到判断重构数组的过程:

为了方便说明,假定 中的 0为x,1为y。 的每一行分别记为x1……与y1……。

第1行:

x1=0时。为假值,取第三个参数中的对应的值为"张三1";

y1=1时。为真值,取第二个参数中的对应的值为5.

所以组成一个数组

第2行:

x2=0时。为假值,取第三个参数中的对应的值为"张三2";

y2=1时。为真值,取第二个参数中的对应的值为9.

所以组成一个数组

……

第5行:

x5=0时。为假值,取第三个参数中的对应的值为"张三5";

y5=1时。为真值,取第二个参数中的对应的值为10.

所以组成一个数组

具体如下图所示:

所以整个公式就可以写成:

=VLOOKUP(F3,{"张三1",5;"张三2",9;"张三3",8;"张三4",2;"张三5",10},2,0)

同样,公式还可以反着来写:

=VLOOKUP(F3,IF(,$D$2:$D$6,$A$2:$A$6),2,0)

主要是要明确1为真值是为VLOOKUP查找的目标值,0对应的是结果值,这样才能重构正确的数组。

根据这个例子可以实现VLOOKUP的反向查询以及多条件查询。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210314A01UKK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券