假如Excel划分成九级,你学好普通公式最多也就到第三级,而数组公式即使再差也算第四级初。别看两者相差不多,但每往上一级能力相差就越大。学会数组公式,你就会知道很多普通公式都搞不定的问题,在这里就能轻松解决。
1.数组的基本概念
什么是数组?
如四大名著是一个整体,西游记就是其中一个组。只要我一说西游记,就会一次性出现:唐僧、孙悟空、猪八戒、沙僧。再如点三国演义,里面的四个人也会一起出现。而不用逐个点名,这就是跟普通公式的差异。
一句话:数组一次搞定,普通公式多次搞定。
注:西游记等为事先定义好的名称。
什么是数组公式?
数组公式可以执行多项计算并返回一个或多个结果。数组公式必须按Ctrl+Shift+Enter三键结束,在输入数组公式时,Excel 会自动在大括号 { } 之间插入该公式。目的是告诉Excel,我不是普通人,要对我特别招待,一副盛气凌人的样子。
一般情况下,能力跟脾气是成真比的,能力越强,脾气越大。正因为数组公式能力比普通公式强,所以脾气大点,动不动就耍脾气不干。
需谨记于心的内容:你不是说一喊西游记就所有人出来吗,怎么只出来一个唐僧,其他人跑哪去了?
你把我当成普通人,当然不鸟你拉,选择区域,记得要按Ctrl+Shift+Enter三键结束。
注意编辑栏的变化,三键结束就会自动生成{},直接回车的话就没有。
西游记只有四人,如果区域多选的话也会出错。
西游记四人是一个整体,不能更改其中一个,要改就得全部改。
在Excel2013版连让你回车都不允许,在低版本显示“不能更改数组的某一部分”。可以点击“×”按钮,然后选择整个区域,删除(修改)公式。
点击包含多单元格数组的任意单元格,使用快捷键Ctrl+/就可以快速选中整个数组区域。
只要你摸清数组公式的脾气,以后注意点,就没事。
玩笑开完,进入正题。
例1 根据单价跟数量,求总金额?
常规方法就是先用辅助列求和金额,然后汇总,分两步进行。
数组公式,只需一步就可以,记得按三键结束。
=SUM(B2:B3*C2:C3)
例2 将数值四舍五入保留整数?
常规法需要下拉公式才能获取结果。
数组公式,选择B2:B8,输入公式,一步就可以,记得按三键结束。
=ROUND(A2:A8,0)
前2题比较简单,体现不出数组的价值,来一道稍微难点的,体现数组的魅力。
例3 如何根据目标产品求总数量?
常规法是用SUMIF函数依次获取每个目标产品的数量,然后再用SUM汇总。而数组公式能够省去辅助列,一步到位。
=SUM(SUMIF(A:A,D4:D7,B:B))
首先来看看这个是怎么运算的,F9键这个应该没忘记吧,利用这个来看下运算过程。
=SUM(SUMIF(A:A,D4:D7,B:B))
在编辑栏选择SUMIF这部分,抹黑,按F9键得到{9;6;2;7}
财务工作中,你是否遇到焦头烂额不知如何解决的问题呢?
也就是说,SUMIF第二参数选择区域的话,可以分别统计,然后在最外面嵌套SUM函数就是将统计的结果汇总起来。
也就是说,不管过程有几步,数组公式都能一步到位,省去中间步骤。
常量数组
数组公式的参数有的时候并不是直接引用单元格,而是自己输入的,如{0,60,80},{"差","中","优秀"},这些就是常量数组。常量数组跟数组公式有点不同,不需要按三键结束。
将分数小于60等级划分为差,60~80为中,80以上为优秀。
=LOOKUP(A2,{0,60,80},{"差","中","优秀"})
一般划分区间都是用常量数组,而其他情况都是直接引用单元格区域。当然常量数组也可以通过引用单元格,然后按F9键获得。
2.创建第一个数组公式
光说不练假把式,边说边练才是真本事。
我们知道用ROW、COLUMN可以生成行列序号,如果要生成1-10可以通过这两个函数下拉获得,但能否一次生成呢?答案是肯定的。
选择区域A1:A10,输入=ROW(1:10),按Ctrl+Shift+Enter三键结束,这时就一次生成1-10。这个也叫多单元格数组公式。
同理,要生成水平1-10,可以用=COLUMN(A:J),按三键结束。
如果有动手的朋友应该会发现,用COLUMN创建数组好麻烦,还得去数字母才知道多少,很不直观,如果是创建1-1000,估计得数哭了。所以绝大多数情况下都是借助ROW生成,这个比较直观。
这时有的朋友可能会说,ROW不是只能垂直生成1-N吗,水平不是得COLUMN?
话是没错,但别忘了Excel中还存在一个转置函数TRANSPOSE,这个函数跟选择性粘贴的转置一样,可以将行列互相转置。
=TRANSPOSE(ROW(1:10))
这个有什么作用呢?估计很多朋友现在还是疑惑,别急以后你就会知道。先透露下MMULT函数,这个是一个高级函数,这个函数很多时候就得用TRANSPOSE+ROW才能完成系列运算。不过这个函数太难了,轻易不会使用,留在后面的章节再详细了解。
3.维度原来就是这么回事
经常听到一维表格跟二维表格,其实数组也分一维、二维、三维。
垂直的一条线或者水平的一条线这个就是一维。
当行列构成一个区域,就成立二维。
我们最常用到的就是一维跟二维,就是同一个工作表内。其实还有多工作表、多工作薄这个就是N维,用得不多,知道就可以。
如何根据购物清单,一次获取一维垂直数组、水平数组与二维数组?
垂直数组各项目之间用;隔开。
={"项目";"橙子";"苹果";"香蕉";"莴苣";"番茄";"南瓜";"芹菜";"黄瓜"}
水平数组各项目之间用,隔开。
={"项目","商场","类别","数量","单位","单价","总计"}
同理,可获得三行两列的二维数组。
={"项目","商场";"橙子","日用杂货";"苹果","果园"}
用这种常量数组有一个好处就是可以不再借助原始数据源。如在计算个人所得税的时候我们直接利用公式就得到结果,省去重新建造对应表的麻烦,方便快捷。
=ROUND(MAX(AG5*{0.03;0.1;0.2;0.25;0.3;0.35;0.45}-{0;2520;16920;31920;52920;85920;181920},0),2)
4.数组的自动扩展性
如果看过卢子的第一本书《Excel效率手册 早做完,加班》会发现一条类似这样的公式。
=SUM((A1:A10>5)*1)
有一部分的朋友对于这种用法很不理解,后面的*1是干嘛用的。其实这里就涉及到数组的自动扩展性。
什么是数组的自动扩展性?
将A列的数据都扩大2倍。
这是常规法,就是每个单元格逐一相乘。但实际上数组能够自动扩展区域,A1:A10现在有10个单元格,B1就自动扩展成10个。
再回头看原先的问题
=SUM((A1:A10>5)*1)
其实根据自动扩展的特点,公式会自己变成
=SUM((A1:A10>5)*{1;1;1;1;1;1;1;1;1;1})
然后跟(A1:A10>5)逐一运算,后面的1其实就是重新构造了一个条件。这也说明了为什么只有一个条件能计算的原因。
来源:Excel不加班
这里相信有许多想要学习会计的同学,大家可以关注小编头条号,
下方评论区留言:想要学习,并收藏本文;私信小编:学习
即可领取一整套系统的会计学习资料!还可以免费试学会计课程15天!
因领取人数太多,不能及时回复,请大家耐心等待。。。。