EXCEL函数问题?

近日在老菜鸟的班有人丢出来这样一道题目:

问题很简单,就是计算余额,原本使用了一个大家都能看得懂的公式:=A2+C2+E2-B2-D2-F2

就是将入库全部加起来,再减去所有的出库数量。

公式固然简单,但是不够方便,考虑到今后会有更多的列需要进入统计范围,这样逐列加减不能满足需要,因此考虑使用区域进行计算的公式。

好了,问题丢出来了,高手们开始大显身手,结果就出现了下面的情况:

这个公式其实也不算复杂,第一个sumif统计出入库的合计,第二个sumif统计出库的合计,然后相减。相比第一个公式,解决了增加数据区域的问题,在这个问题来说,已经完全满足要求了,可是,有人不满意了,说这个公式太长了,结果就……

sum带上数组横插一脚

注意这个是数组公式,需要按Ctrl、shift和enter。

这个公式的思路与前一个并无差别,只不过是将sumif中的条件使用逻辑值表示,公式整体看上去短了一点,但是从运行效率来说,并不比前一个公式有优势,因为数组的运算速度要低于sumif,当然就这么点数据,根本也感受不到速度方面的差距。

不过sum配合逻辑值与数组,功能方面确实强于sumif,可以解决多种统计问题。就在此时,有人发言,公式还是太长,众人皆惊……

-1^来了,大家瞬间懵了

这就是传说中的神公式啊!

A2:F2这个是实际求和的区域,几个公式中都是一样的表现形式,不多说了;

A$1:F$1=B$1这是一个条件的表示方法,上面那个公式也有用到,不过在这个公式中,少了一个条件就是$A$1:$F$1=$A$1。

其实深思一下,确实只需要一个条件,因为只有两种情况,原来的条件分别判断=入库,和=出库两种情况,实际上在表格中,也只有这两种情况,入库和非入库(出库)。

公式的这部分解释以后也还能理解,重点是-1^怎么解释?

这部分考察的是你的数学功底了,具体来说,-1就是一个数字,^代表幂运算,也就是乘方,-1作为底数,指数就是{0,1,0,1,0,1},因为任何数的0次方都是1,任何数的1次方就是这个数本身,所以-1^(A$1:F$1=B$1就是{1,-1,1,-1,1,-1}。

关于这段话,你明白就是明白,不明白我也没办法了,去补习数学知识吧。

经过以上解释,公式实际上计算的是=SUM(A2:F2*{1,-1,1,-1,1,-1}),这部分就考察你的数组运算的功底了,简而言之就是入库全部相加,出库全部乘-1相加(实际就是相减,因为sum函数只能进行求和,如果要求差只能是把要减的数字变成负数)……

好了,又啰嗦了一大堆,估计是有人欢喜有人愁,欢喜的人是有了新的收获,愁的人是觉得自己不会的更多了(估计看到一半的时候就晕了)。

其实都无所谓的,站在解决问题的角度,只要学会了sumif的基本用法,这个问题本来就很简单。但是站在探寻函数乐趣的角度,看到神公式一开始都会晕,只要不断的巩固基础知识,慢慢琢磨神奇的思路,即便自己写不出来,能够看明白也是一件乐事!

最后当然是希望想学习Excel的朋友都来老菜鸟的班一起玩咯,qq群搜索老菜鸟的班,就能找到我们了!

看完有收获,别忘了点赞和转发哦~

搜索微信公众号:Excel基础学习园地(id:Excel000000)更多资料供你学习

如图所示:我想做这样的公式:A列不是有jd1,jd1-1,jd2这样的数嘛,后面对应坐标B,C列。I列有jd和jd1,jd2,jd3这样的值,后面对应坐标M,N列。我想把I列jd1,jd2,jd3的对应的M,N列的坐标... 如图所示:我想做这样的公式:A列不是有jd1,jd1-1,jd2这样的数嘛,后面对应坐标B,C列。I

你这个只能执行JD10以内的,如JD10,JD11都不能执行,我总共有两三百个JD

你是想把没带“_”的A栏数字复制到I栏中,而带“_”的A栏数字不替换,保留I栏的数字?

  1. 直接将A栏复制到新的栏位,然后将该栏位带“_”的A栏数字替换成空格,或筛选包含“_”的将它清除,也可以查找“*_*”,替换为(什么也不输),再将该栏选择性复制(忽略空格)到I栏即可

不是,你看嘛,A栏jd1.2.3.4.5是被框了的,被框了的是我自己手动从 I 栏对应的坐标复制粘贴的,我只想换A栏jd1.2.3.4这些整数的坐标,他们的坐标又是从 I 栏对应的坐标来的,怎么换。
看不明白你要换什么,你改用单元格的的坐标来举例比如I1单元格换成A1单元格,这样好理解,我现在理解的是你要将A栏与I栏相同的B、C栏的数字用M、N的数字替换对吧?如果是,如果要在B、C栏存放,还需要在筛选状态下录入公式才可以做到:
先筛选A栏不含“_”的单元格,然后输入公式=VLOOKUP($A4,$I:$N,COLUMN(E4),FALSE)
如果是另外一栏,则不需要筛选,用IF函数来判数取哪个数就可以了:
=IF(ISERROR(FIND("_",$A1,1)),B1,VLOOKUP($A1,$I:$N,COLUMN(M1)-COLUMN($H1),FALSE))


· 贡献了超过313个回答

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 EXCEL基础函数 的文章

 

随机推荐