资源描述
1 作者:西蜀鄙夫 xsbf (2017 年) 目目 录录 第一回 重新拼合两列数据 . 2 第二回 对数据区域的挑选 . 4 第三回 数组的长宽与数组的扩展 . 6 第四回 多个阉割式 if(1,0,xxx,)拼合数组. 8 第五回 从数组的角度理解 if(1,0,xxx,yyy) . 11 第六回 从逻辑的角度理解 if(1,0,xxx,yyy) . 14 第七回 if(1,0,xxx,yyy)嵌套 . 17 第八回 1,0嵌套的宽度问题 . 20 第九回 if(1,0,xxx,yyy)的一个经典实例 . 22 第十回 choose()函数 . 24 Excel 公式函数的运用中,时见 if(1,0,xxx,yyy)这样的结构出现,究竟是什么意思,如何理解呢?对于许多人来说,不太好理解,本文就此详述一二,力求最通俗最详细,欢迎诸君斧正。 群内每日免费分享5份+最新资料 群内每日免费分享5份+最新资料 300T网盘资源+4040万份行业报告为您的创业、职场、商业、投资、亲子、网赚、艺术、健身、心理、个人成长 全面赋能!添加微信, 备注“入群”立刻免费领取 立刻免费领取 200套知识地图+最新研报收钱文案、增长黑客、产品运营、品牌企划、营销战略、办公软件、会计财务、广告设计、摄影修图、视频剪辑、直播带货、电商运营、投资理财、汽车房产、餐饮烹饪、职场经验、演讲口才、风水命理、心理思维、恋爱情趣、美妆护肤、健身瘦身、格斗搏击、漫画手绘、声乐训练、自媒体打造、效率软件工具、游戏影音扫码先加好友,以备不时之需扫码先加好友,以备不时之需行业报告/思维导图/电子书/资讯情报行业报告/思维导图/电子书/资讯情报致终身学习者社群致终身学习者社群关注公众号获取更多资料关注公众号获取更多资料2 第第一一回回 重新重新拼合两列数据拼合两列数据 1. 要想明白 if(1,0,xxx,yyy),先看个小问题,左边的数据区域中,如何把丁、辛两列挑出来到右边这样构成一个数组区域呢? 方法一:选中 D3:D7 复制粘贴,再操作 H3:H7; 方法二:选中 D3:D7 按 CTRL 键拖动到右边。这些手动操作方法,非本文讨论的范畴,一律无视。 2. 方法三,在 L3 格输入=d3,然后下拉,再操作另一部分;方法四:如图输入数组公式,再操作另一部分。这两种方法,其实要用“两个”公式,能否只用一个统一的公式就能达到目的呢? 3. 试一下,图中企图用将两个数组用单纯的“+”或“&”这样来完成,显然不行。 4. 想出这个公式,先乘上数组1,0,再考虑相加,恭喜成功! 3 5. 但是,刚才这个公式局限太大,应付纯数字还行,但是数组中有文本,显然就不能完成任务了。由此可以看出,这个问题,决非想象中的简单容易。 6. 要如何解决这个问题呢?不必兜圈子,请出今天的主角 if(1,0,xxx,xxx),用这样的数组公式即完成任务。图中用一个统一公式把辛-丁两列提出来成了右边这样,不管原来数据是否数字还是文本均无问题。 4 第二回第二回 对对数据数据区域区域的挑选的挑选 8. 刚才用到 if(1,0,xxx,yyy) 这个结构就是为了重新构造一个数组,原理是怎样的?这里且把这个结构阉割一下,去掉”yyy”,剩下 if(1,0,xxx)。观察图中结果,(1,0按“1”选择数据,其中的“1”可理解成“挑选” , “0”可理解成“不挑选” 。 9. 此例,不妨把1,0丰富一下,夸张地搞一串。如图这个公式,先看右边结果,就把左边区域的数据 “有选择地” 挑选出来组成一个新的区域, 挑选的方法就是, 0,0,1,0,0,1,1,0,1,0这一句中“1”对应的丙、已、庚、壬列(图中红字已标识,辅助观察) ,而“0”就是没有挑选的列,对应右边显示的“false” 。 10. 此例, 1,1,1,1其实选中连续的 4 列,0,0,0,0就是没有选择,显示“false” 11. 插入一个小知识:1,0, 中的1指的是非 0 ,并非一定是自然数的1 ,下图5 中,把 1 换成其他非 0 数,两种方法操作结果一样。 12. 1,0, 这个其实对应列的选择,类似的1;0; 对应行的选择,更有甚者,还可以是象1,0;0,1这种行列的组合。如图所示例子,这个挑选,其实相当于对一个矩形数据区域,筛掉某些数据,留下的数据构成一个数组。 13. 上例中1,0;0,1太复杂,可以建立辅助表格,帮助观察。 6 第第三三回回 数数组组的长宽的长宽与数组的扩展与数组的扩展 14. 1,0, 中的元素排列 “个数”(也就这个数组的长与宽) 非常重要。 比如: 0,1,0,0;1,1,0,1长为 4 宽为 2;对于单行数组来说,大括号内有几个数,它的宽度就是多少, 1,0长度为 2,1,1,1,1长度为 4,0,0,1,0,0,1,1,0,1,0长度为 10。 15. 下图中0,0,0,0的长度为 4,但设置公式范围时有 6 列,所以后两列显示“#n/a”出错信息。 “false”跟“#n/a”是两个不同概念,前者表示未选择到数据,为“合法的空” ,后者表示错误“非法的空” 。 16. 出现“#n/a”是由于扩展错误,上图中,要把长度为 4 的数组扩展为长度为 6,不足的 2只好以错误值进行扩展。一个重要的特例是,数据如果是单行或单列,会得到正确的扩展。下图中,挑选1,0,0,1的长度为 4,而被挑选的范围 F3:F8 列宽为 1,要从1 份变成4 份 ,电脑并不拒绝操作。 17. 刚才的操作, 其实相当于把 F3:F8 数据复制多个 (即数组扩展) , 然后再进行挑选。 在 Excel7 中数组对于两边大小不一的运算时,都会扩展以适应,但是超过 2 维,扩展是以错误值扩展的,所以一般避免这种有错误值情况的发生。 18. 单行或单列数组可以正确扩充,对于 1 个常数(数字、文本等) ,相当于特殊的单行或单列,所以同样会扩充,如图所示, 。 8 第四回第四回 多个阉割式多个阉割式 if(1,0,xxx,)拼合数组拼合数组 19. 前面讲了用阉割式 if(1,0,xxx,)挑选数组的方法,实质是从一个数组中选择某些部分,能否再选择另一个数组选择另一部分,然后阴阳互补式的拼成一个新数组呢?这是可以的。如图这例中, 1,0和0,1刚好相反。 20. 此例同样,两个数组选择区域的1,0刚好相反。 21. 既然可以由两部分组合,当然也可以用三部分甚至更多的部分“&”并成。 9 22. 上图公式较长,但思路相当浅显,举例第一个分句,在 m11:o16 的范围内用1,0,0选出第一列,然后仿此,在其他地方选出几列,最后并集起来。形象比喻一下相当于几个人铺地砖,第 1 个人跳着铺了部分,第 2 个人铺前面留下的空档,第 3 个接下铺前面剩的空档,铺的原则是不允许有重叠 。抽象点看,就是1,0,0+0,1,0+0,0,1=1,1,1,拼砖成功。 23. 不过,上图这个公式是局限,假如拼中这块板,需要是 A 列,公式中0,1,0的1对应 A 列,但 A 列已经是最靠前的列,之前就没有了,所以这一步完成不了。 24. 解决的方法,异常简单,就是数组单行单列的扩展,不去考虑实际引用范围,输入单列就行了,如图所示。 25. 再一例拼板,图中是按 1-2-3-4-5 这样顺序提取数据拼板,其中 3 和 5 是同一列数据。公式可以写成这样,因为 2-3-4 这几列是连续的,所以注意我这里写的是0,1,1,1,0,对应区域跟着作相应变化。 10 26. 拼块构成数组时,也别忘了,如果对象全部纯粹是数字,可以直接相乘再相加,如图所示。 27. 本回总结: a) 这种拼板式的组合数组只是一个基础方法,虽不是最优化的办法,但确是个万能的办法,具体操作中有可能公式写得老长,但仔细分解一下,思路相当地简单明了。 b) 这种操作思路,一定要考虑数组长度问题,根据数组最后有多宽,再回头确定1,0,,空缺的部分用 0 补足。 c) 1,0,这种长串形式,受太极八卦图的启发,体现出一种阴阳互补思路,如果有多个部分,则几部分的1,0,相加,应得到1,1,1,1,1,也可以说是铺地砖的思路。 d) 用“&”并合,会把数字格式的数据变成文本格式的数据 。 e) 这类公式中,if(1,0,xxx,yyy)这种结构,其实阉割了半截没用。能否让公式简化呢,就不能太监了,请看下一回。 11 第五回第五回 从数组的角度理解从数组的角度理解 if(1,0,xxx,yyy) 28. 先看把 if(1,0,xxx,yyy)简化一下,变成 if(1,xxx,yyy)和 if(0,xxx,yyy),如图所示,这个相当简单浅显,可以理解成1,0变成 1 或 0,得到长度为“1”的数组。 29. 当然,在数组扩展情况下,设置多长的区域,数组会扩展重复。 30. 理解 if(1,0,xxx,yyy),可以看成,因为1,0的长度为 2,运算过程中,第 1 步就是产生长度为 2 的数组(h3:h7 本身长度为1 ,要放进长度为2的数组中,这里就发生了扩展,重复 2 个 h3:h7 内容,如图所示第 1 步) ,然后根据1,0的选择(图中第 2 步) ,得到结果(图中第 3 步) 。 12 31. 同理,if(0,1,xxx,yyy)也这样理解。 32. 最后,把这两个子公式合并, =IF(1,0,H3:H7,D3:D7),这就是这类结构的经典用法。 33. 需要注意的是,前面的例子中,这里的条件是相反的哦。 13 34. 还是这个例子,还可以写成这样,只是把数据区域改变一下,但结果一样。这种没有数组的扩展的方法,前面已经提到,使用的可能有局限性(比如第 2 列恰好为 a 列数据) ,不如前面的方法。 35. 虽然结果一样,但计算过程中小细节却不尽相同,仿前,在第 1 步时,没有数组扩展,直接选择出 h3:i7 这部分,第 2 步通过1,0选择后就去掉了 i3:I7 的内容,最后得到跟前面一样的结果。 14 第六回第六回 从逻辑的角度理解从逻辑的角度理解 if(1,0,xxx,yyy) 36. 上回提到的 if(1,0,xxx,yyy)可以看作两作子公式合并而成,为什么呢?估计有些人并不能一下明白其道理,这回接着说。我们先回顾一下 if()函数,它的结构是可以分解的。 37. If(条件,事件 1,事件 2)中的“条件成立”则“事件 1” , “条件不成立”则“事件 2” 。 a) 我们把“条件成立”表示为“a” ,则“条件不成立”就是“非 a” ; b) “a”和“非 a”构成互补(或者说是反相) ; c) 显示1,0(其实是非 0,0)的反相是0,非 0,一般表示为1,0和0,1。 38. 如果看不懂上图,也不太清楚刚才的说法,就举个生活中通俗的例子。 比如命题 I: “如果分数大于或等于 60 分,就为及格,否则不及格。 ” ,这句话,相当于: A:某人说: “如果分数大于或等于 60 分,就为及格,否则(此处不吱声) 。 ” ,然后缓口气,接着说“如果分数大于或等于 60 分,(此处不吱声) ,否则不及格。 ” B: 某人说: “如果分数大于或等于 60 分,就为及格,否则(此处不吱声) 。 ” ,然后缓口气,接着说“如果分数小于 60 分,就为不及格,否则(此处不吱声) 。 ” c: 某人说: “如果分数小于 60 分,就为不及格,否则(此处不吱声) 。 ” ,然后缓口气,接着说“如果分数小于 60 分,就为不及格,否则及格。 39. 尽管这几种方式表现各异,但他表达的意思完全一样,不过把一句分成两句来说而已。 前几回表达的内容,其实就是上面的第 2 式(反相式) 。注意图中的式子,if(1,0,xxx,yyy)其实等价于 if(1,0,xxx)& if(0,1,yyy),前面一直强调阴阳互补即反相式 。 15 40. 回头再前面这个示例,前面这个方法。 41. 把公式合并一下,至此,就得到 if(1,0,xxx,yyy)结构的正规用法,上回是从1,0数组长度然后进行选择的角度出发,这
展开阅读全文