ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 30734|回复: 73

[讨论] IF({1} 与 IF(1 的区别

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-12-6 13:59 | 显示全部楼层 |阅读模式
本帖最后由 丢丢表格 于 2012-12-7 02:50 编辑

(简单一问)
=SUM(IF(N(IF(1,A5:A10)),A5:A10)*{3;3;5;5;4;4})
=SUM(IF(N(IF({1},A5:A10)),A5:A10)*{0;3;0;5;0;4})
这两个公式的区别。
  
……………… IF({1} 与 IF(1 的区别

先讲 IF(1,A1:A7)
    小马是人口统计员,他接到一个任务是统计朝阳小区的人口数。
    小马接到的任务交代是:统计小区居委会的人口。就如 IF(1,
    这位小马办事决不马虎,带上登记册马不停蹄就前往这小区统计来了。
    第一排 第一楼 就是居委会办公室,办公室有办公人员老李、大刘、小张、小王四人,小马只登记了这四人,就回去交差了。
          (小马虽然没有统计全小区的人口数,但它还是以指意办事决不变样)

再讲 IF({1}
    一个小区怎么会只有四个人呢?
   麦部长意识到指令下达有误,重新下任务:
  统计朝阳小区居民(包括居住与办公的人员)的人口数。 就如 IF({1},
   小马办事真是一丝不挂(应该叫一丝不苟),从第一幢一直到最后一幢、一家一户上门作了登记,手脚真麻利,不到一秒种(电脑速度就是快)就统计好了。
   麦部长看到一份共有911人数、并且资料登记祥细清析的统计表,连夸带骂地说道:小马办事真不懒啊,就是死板一点。(嘿嘿,电脑就是这个德性啊)

    分析 IF (1,    这个1,就是引导标志,  它指定后面只是一个数据区值 ,不是数组,只是指向这个区域而已。
     
    IF({1},  这个 {1} ,是告诉公式,后面跟随的是个多维数组 ,数组的个数是由后面区域的单元格决定的。从而它起到了从单一区域扩展成多维数组的作用。

     例如 =IF({1},5)     虽然后面只是一个5,  我们通过抹黑公式不难发现,这个5 ,就是一个数组, 结果是 {5} .
     
   为什么 IF(ROW(1:7),A1:A7)  会等同于 IF({1},A1:A7)  呢?
    因为真值是不分大小的(除0以外) ,  因为函数中的真值定义是: 不等于0的任何数.
  所以有 =IF({1}  =IF({2}  =IF({3} …………  =IF({7}  。  我们把它简化写成 =IF({1} 。
   那么,IF({1}  后面跟随多少个数组呢 ? 电脑这点从不含糊,它会对后面的区域从左至右,从上到下搜寻一遍,自然就等同于后面数据区域的单元格数了。



IF({1} 与 IF(1 的区别.rar

4.22 KB, 下载次数: 829

评分

18

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-6 14:14 | 显示全部楼层
丢丢老师的问题,不简单啊!
我试了一下,
把里面一层的IF去掉,用公式:=SUM(IF(N(A5:A10),A5:A10)*{0;3;0;5;0;4}),结果为0;
而将{1},改为{1;2;3;4;5;6},公式:=SUM(IF(N(IF({1;2;3;4;5;6},A5:A10)),A5:A10)*{0;3;0;5;0;4}) 结果同{1},为77.
其中关键,觉的应在N,最短的一个涵数! 具体为何,就不知道了.
期待老师的解惑!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-6 14:23 | 显示全部楼层
titi012 发表于 2012-12-6 14:14
丢丢老师的问题,不简单啊!
我试了一下,
把里面一层的IF去掉,用公式:=SUM(IF(N(A5:A10),A5:A10)*{0;3;0;5; ...

对!理解问题就是要动手与动脑相结合。

TA的精华主题

TA的得分主题

发表于 2012-12-6 14:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我谈谈我的理解,因为第一条公式中if(1,A5:A10)返回的结果是A5:A10,是一个区域引用,而N()对于区域引用只会返回第一个单元格,也就是“早”,结果得出0;
而第二条公式因为if({1},A5:A10)生成的是一个数组,N()返回数组结果{0,5,0,10,0,3},得出正确答案!

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-12-6 14:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
天地有雪 发表于 2012-12-6 14:27
我谈谈我的理解,因为第一条公式中if(1,A5:A10)返回的结果是A5:A10,是一个区域引用,而N()对于区域引用只会 ...

对!  IF(1 ,只是调用<指向>这整个区域, 而IF({1},是把后面的区域展开出来,构成同区域个数相同数量的数组.
欢迎大家深入讨论.

TA的精华主题

TA的得分主题

发表于 2012-12-6 14:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-12-6 16:13 | 显示全部楼层
丢丢表格 发表于 2012-12-6 14:38
对!  IF(1 ,只是调用这整个区域, 而IF({1},是把后面的区域展开出来,构成同区域个数相同数量的数组.
欢迎 ...

如果单用=IF(1,A5:A10)和=IF({1},A5:A10),显示的结果是一样的.
试过在B5:B10,C5:C10分别输入上两公式,显示结果一样,按F9查看结果也一样.
只是在前面加了N后结果才不一样.
疑问更多了,呵呵,.

TA的精华主题

TA的得分主题

发表于 2012-12-6 16:26 | 显示全部楼层
个人觉得
if(1    返回的是一个范围,就是range
if{1     返回的是一个数组

N(range)的情况会直接将range的第一个值作为基准判断
而N(数组)则会返回一个同维的数组

所以下面两个导致了不同的结果
=N(A5:A10)返回一个0
=N({"早";5;"中";10;"晚";3})返回0;5;0;10;0;3

TA的精华主题

TA的得分主题

发表于 2012-12-6 16:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
if(1 的1的最终含义是告诉程序我这个是TRUE值,你必须返回后面对应的代码
IF{1}是告诉程序,1代表一个数组,可以扩展,所以会将1扩展为与后面A5:A10同行同列大小的范围,
然后再进行真假判断,所以最后返回一个数组

个人的小小看法,说错别见怪

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-12-6 16:41 | 显示全部楼层
IF函数的应用博大精深,我也来说说我的理解,IF(1,)表示的是条件,在这可以做TURE讲;而IF({1},)则把后面的数据转换为一个数组公式。
N函数,在IF(1,)中,N把不是数字的函数直接转换为false,即为0,数组在单个单元格中,系统默认是第一个值0,所以最后返回的是外面IF函数的第三个参数0。
       在IF({1},)中,N将后面数据转为一个数组,为汉字的转为0,形成了一个{0,5,0,10,0,3}的一个数组。
最后就是一般的数组相乘了!有错误之处,还请老师指导!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 11:26 , Processed in 0.053914 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表