内容提要:MAX函数谁都会,没错!就是excel最大值函数!但本文的Excel取最大值函数案例,小编还真的第一次看见,长见识了!
周末闲来无事,Excelman正想出去溜达。突然有表妹来电话求救,语气疲惫。
表妹:Excelman,我的MAX函数失灵了,怎么办?
Excelman:又遇到什么问题?快说来听听。
于是表妹立马从QQ那发来表格,我打开表格一看,情况是这样:
表妹:我要求每种货物装箱号的最大值。比如第二行的货物(A列)是苹果,装箱号(B列)是“1,3,4,5”,那么我要(在C列)得到1,3,4,5 五个数字最大的数,也就是5。我试过用MAX函数啦,结果怎么都是0。你看上面的截图(图一),MAX好像失灵不管用了!Excelman啊,我有上千行的数据要求装箱号的最大值,怎么办!
Excelman:表妹,你一时糊涂。如果MAX函数的参数是文本,虽然不会显示错误符号,但是MAX函数只会把参数里的文本当作0处理。上图(图一)的 =MAX(B2) 相当于 =MAX(“1,3,4,5”) ,MAX值可不会把它当作有四个数值给你挑选出最大值。它只会认为“1,3,4,5”是一串文本,于是当作 0 处理。即是相当于 =MAX(0) ,结果肯定总是 0 啦。
表妹:那也是哦。那你快告诉我怎么办?
Excelman:别急。MAX函数的参数可以是数组。比如单元格输入=MAX({1,3,4,5}) 试试看。
表妹马上试了一下,将结果截图发来,如下图二。
表妹:有点神奇。这个公式什么意思?特别是这个{1,3,4,5},大括号包围起来的东西是什么呀?
Excelman: {1,3,4,5} 是一个数组。数组者,即由一些数据作为元素构成的一组数据也。(这是废话还是绕口令?)简单浅显地说,一个数组表达两层意思,一是数据本身的值,二是数据所在的行列位置。比如{1,3,4,5}表达的是一行四列的一组数据。也就是说第一行第一列的数据的值是1,第一行第二列的数据的值是3,如此类推。又比如,{1,3,4,5;6,7,8,9}表达的是两行四列的数据,英文逗号表示换列,英文分号表示换行。第一行第一列的数据的值是1,第二行第一列的数据的值是6,第一行第二列的数据的值是3,第二行第二列的数据的值是7,如此类推(参考下面的图三理解吧)……
表妹:不用说太多,我懂。我明白你想说的是,先将“1,3,4,5”、“2,8,9”等等这些字符逐个转为数组,然后再用MAX函数逐个求最大值。对吧?
Excelman:聪明!正是如此!若得如表妹一徒,幸哉!
表妹:那你告诉我怎么做吧?总不能让我一个个敲键盘打大括号输数字写公式吧?
Excelman:你可以用下面的方法,三个步骤。
(1)第一步,在“装箱号最大值”那列(图四中的C列)用公式给每行构造出含有MAX函数单词的文本。
比如上图,在单元格C2填写公式 ="=MAX({"&B2&"})" ,然后向下填充公式到表最后一行,这样每一行都得到一个文本。这些文本恰好是我们希望手工逐一输入的那些MAX函数公式!效果如图四。
(2)第二步,将辅助列复制,选择性粘贴,把辅助列的公式转为数值。将辅助列的公式的值变成文本。
(3)第三步,到高潮了,这是见证奇迹的时刻!
“选定装箱号最大值”那列的数据区域(比如图五中的C列的数据区域C2:C5),按CTR+H快捷键,调出“查找和替换”对话框。“查找内容”和“替换为”两处都要填写“=”;是的,你没有听错,两处地方填的内容是一样的,都是“=”(参考图五)! 最后按“全部替换”。这样能够迫使Excel把作为文本的公式转为真正可以计算的公式。妥妥的,收工!
表妹:哇,没想到方法还蛮简单。看来今天加班不用很多时间啦。谢谢你,Excelman!
后记:亲爱的读者,看到这里,学会了吗?如果把表妹的问题加大一丁点难度,比如装箱号的分割符不是“,”(逗号),而是“-”(减号),也就是“1,3,4,5”换成“1-3-4-5”,你应该也会解决吧?——别告诉你不会把“-”(减号)替换成“,”(逗号)哦。
另外,这个问题用宏表函数Evaluate搭配MAX,或者自定义函数也可以解决,以后有机会再谈。