为什么说函数不是最好的解决方案(二)
发布时间:2018-05-19 06:16:58
前言
经常看到有人会问各种各样的Excel问题,提问者在提问的最后,都会问一句:请问这个问题该用什么函数来实现。也经常看到有人会写一些文章,介绍某个问题用各种函数的实现方式。
在这些问题的回答和文章中,经常可以看到一些非常高级的函数用法,会给人耳目一新拍案惊奇的效果。其中,sumproduct和sumifs就是两个比较典型的例子。
问题的提出
问题的提出往往是这样的:我有一份数据,想要对它进行统计,不知道函数怎么写?哪位高手能帮帮我啊。
高大上的sumifs
这个问题是一个群友提出的,图片中就是他的原始数据和问题。我们在图片中给出了这个问题的函数的写法。
这里用了sumifs函数。看上去这个函数并不复杂。
我们再来看下面的例子。
高大上的sumproduct
这个例子中,可以用的方法很多,其中就可以用到我们上面说过的sumifs。当然这里可以用很简洁的sumproduct。看一看这个公式:
=sumproduct((month(A$2:A$275)=D2)*B$2:B$275)
当你提出这个问题,你身边的高手随手给你写出了这个公式,你是不是对他佩服的五体投地;你使用了这个公式,发现真的得到了正确的结果,你是不是对Excel的神奇能力惊叹不已。
惊叹之余,你虚心向高手请教:这个函数什么意思?为什么month(A$2:A$275)=D2这么写?为什么他们能够相乘。高手耐心为你解答,然后你似懂非懂的点点头。把这个函数在笔记本上记了下来,准备以后用的着的时候拿出来用。
问题在哪里?
这一切看上去没什么问题。但是如果你是常年使用Excel的表哥表姐,那么其中隐含的问题就会对你有很大的影响。这个思路至少有下面的几个问题:
1. 这些看上去很简单的函数,实际上使用中都有有些不好理解的地方。例如,我经常看到很多使用者对Sumifs这个函数中那些条件纠缠不清;对刚才Sumproduct的中那个日期的写法觉得费解的也大有人在。因为大多数使用Excel的表哥表姐们一听函数、条件、逻辑就会晕头转向,对这些函数应用中的关键地方即使记住了也不能准确理解。
2. 这种做法会向使用者传递这样的信息:Excel的函数能力强大;所有问题都能用Excel函数来解决;所有问题都应该用Excel函数来解决
这是一个非常有害的思路。Excel函数功能确实强大,基本是每一个特定的问题都可以用Excel函数来解决。但是,为了处理特定问题的一些细节,这些复杂的函数往往用到一些特别精巧的逻辑处理方式,这就导致了这些函数只能用于特定的问题。这些问题甚至只是换一个新的文件,就会导致这个函数不能使用。就像我们在(一)中所说,这些函数并没有节约你的时间:只是把原来费劲的手工计算的时间变成了费劲的编写函数的时间。这也是很多人使用很久Excel,水平也没有提高的根本原因:他们思路错了!
另一个解决问题的方法
实际上,使用Excel的数据透视表可以非常简单的解决这个问题。下面是使用数据透视表的步骤:
1. 插入,数据透视表,选择数据区域,确定
2. 设置透视表布局
日期拖至“行”标签,销售额拖至“值”
3. 日期组合
选中日期列,分析,组选择,以“月”分组
出现你要的效果
第一个用sumifs的例子也同样可以使用这种方法来解决。
两种方案的比较
一般人会认为函数比数据透视更加简洁和直接:函数只要写一遍拖拽填充就可以了。数据透视却要那么多步骤。但是,有经验的使用者就会发现两个方案相比,数据透视要有优势的多:
1. 函数非常难以理解;而数据透视表却是直观的。
即使是非常简单的if函数,在处理问题时也会变得复杂无比,主要是因为现实的情况要经过处理才能应用这些函数来解决,这就会导致最终写出的函数难以理解;而数据透视表是直观的,向导型的,一旦掌握,以后的应用就可以随心所欲,不想函数每次都像是新学一遍。
2. 函数对场景的变化非常敏感,行列位置的变化,文件名称的变化,具体数值的变化都会导致原来精心设计的函数失效。而数据透视不会,只要源数据合理,数据透视可以在任何变化下应用;
3. 更重要的是数据透视表可以一劳永逸的解决这些问题,从而把你从每次都要编写设计函数的工作中解救出来。
总结
在我们10多年为企业进行数据处理和分析的经验中,大家热衷的那些函数(尤其是复杂的函数)使用频率非常低。实际上函数并不是解决问题的最好的解决方案,数据透视表才是!