09
通配符“*”
在前面的内容里,我分享了一些条件计算函数:vlookup、sumifs、countifs等。在这里,我想要介绍的,是一个非常好用的符号:通配符“*”。
修改一下之前的例子,如图:
现在,我想要统计所有男式服装每天的收入,该怎么写公式呢?
按之前的方式,我们需要把“男式上装”、“男式下装”、“男式大衣”这些种种商品名称,都放到“{}”中,然后再在sumifs函数外面套上一个sum函数;或者把他们都放在一个独立表格里,通过sumifs函数内嵌套countif函数进行计算。如果作为练习方式,还是不错的选择。
但实际应用中,这些个类型的公式未免也太麻烦了,而且还容易缺漏。如果以后的日子里再出现类似“男式内衣”、“男式内裤”这样的商品,还要回头修改公式或者表格。那当然需要找个办法避免这类多余的工作量啦~如图:
"男式*"的作用是,只要单元格内满足字符串前两个字是“男式”,都视为符合条件。同理,如果将“男式*”改为“*下装”,将会计算对应的所有以“下装”结尾的商品的收入总额。
同理,vlookup也可以利用通配符进行匹配:
它能匹配到第一个“男式”开头的商品的收入值。这种方法能帮助你在不清楚[查找值]全名的时候,提供一种匹配方式。
如果说,需要计算的是包含某单元格内容的数据呢?书写方式也很简单,可以直接在单元格内容里添加上“*”符号,也可以通过公式添加范例:"*"&[引用单元格]&"*"。
怎么样?通配符真的很方便吧?但是有些时候,通配符也会带来“小问题”:
在这个例子里,实际上,我们希望匹配的是2*3的计算结果。但是,函数以为的是:你希望匹配的是以“2”开头,以“3”结尾的单元格之后的第二列的内容。于是,根据vlookup函数从上向下匹配的特性,返回的是“2*13”单元格开始的第二列单元内容“26”。那么,我们该怎么样才能匹配到2*3的计算结果呢?换言之,我们如何去匹配单纯的符号“*”,而不让函数将它视为通配符呢?
一种方式是在“*”前加上“~”,函数将会去匹配普通的“*”符号。公式如下:“=vlookup("2~*3",$A$20:$B$22,2,0)”。
那如果需要引用单元格呢?如何将单元格内的“*”前加一个“~”呢?
这里,我想再介绍一个替换函数:“=substitute([字符串],[需替换字符串],[替换字符串])”,通过这个函数,可以直接将单元格内容里的“*”替换为“~*”实现我们的匹配目标。一番操作效果如下:
我想,看图里的几种公式效果能更好的理解。
10
快速求取乘积的和
可能你要说了,求乘积和有什么难的,我只要加一列,每个单元格内填入对应的单元格乘积结果,然后用sum求和就可以了——甚至还能加个sumifs进行条件求和呢。
话是不错,但多会一个公式,不用添加辅助列,也不坏吧?
“=sumproduct([数组1],...)”返回各个数组中对应数值的乘积和:也就说这些数组中的数值数量应该是相等的,sumproduct函数会将每个数组的第一个数的乘积,加上每个数组的第二个数的乘积……最后返回的是一个“乘积和”的结果。
求表中的总收入时,公式可以这么写:“=sumproduct(D1:D13,E1:E13)”。就不用再去做添加辅助列的动作了。
那问题又来了。如果我想要分日期求销售额呢?其实这个看图就能懂啦。只放图,不说话:
……就说一句:“符合等式为1,不合等式为0”~
能不添加辅助列还是尝试不添加辅助列吧。
如果太依赖辅助列的话,可能你做完一次数据计算,你会发现,源数据表里到处是你的辅助列(手动再见)。
11
补充一些小工具
这一小节里都是一些很简单也不是特别重要的函数,在平时更像是一些工具,嵌套在其它公式内。(主要也是今天白天忙去了没那么多时间写,拿它们来凑一下~)
“=max([数值1],...)”,“=min([数值1],...)”:这两个函数,分别返回输入的所有[数值]的最大值与最小值。
“=rank([数值],[数组])”:返回[数值]在[数组]中从大到小的排序位置。“=rank.avg([数值],[数组])”:返回[数值]在[数组]中从大到小的排序位置,如有多个相等[数值],则返回排序的平均值:
“=and([条件1],...)”:所有的[条件]都成立,返回TRUE,否则返回FALSE;“=or([条件1],...)”:任一[条件]成立,返回TRUE,否则返回FALSE。
“=match([查找值],[查找区域],[匹配类型])”:返回[查找值]在[查找区域]内的序列数:
今天……emm,就写这么多吧~
(预.完)
因为很常用的公式也不多了,明天想想有什么要补的吧。如果没有的我就回来把这里改成——完。
领取专属 10元无门槛券
私享最新 技术干货