Excel中如何返回一个数组? Unknown 2014/05/25

| |

今天遇到一个实例问题:在对应不同对象的记录里,查找某事件相关的日期,然后返回最早及最晚的日期。

最早和最晚无非用MIN()和MAX(),难度在于在一堆记录里,某个事件可能会有好几条记录相关。当然,这个工作用数据透视表也可以完成,但我这不是研究如何用函数得到嘛。那最终的问题在于,如何就某个事件返回一个数组,然后就这个数组进行最小最大分析。

在百度上查了一下,我们采用具体一个案例介绍如何实现这个目的。

excel-array-example

如图,有三列数据,第一列为性别,第二列为成绩,第三列为身高。我们想查成绩高于50分的男生中,身高最高的是多少?

公式已经显示在C10里面,{=MAX(IF((B3:B8)="男")*(C3:C8>50),D3:D8))}。简单讲一下,最外面的大括号是表示基于数组运算,在输完公式(不带大括号)后直接按CTRL-SHIFT-ENTER直接得到。如果直接在公式里输入大括号反而会失败。

接下来解释一下,这个公式在做什么。最外面的MAX表示在一个数组中查找最大的。最关键的是MAX使用的数组是如何得到的?就是靠IF((B3:B8)="男")*(C3:C8>50),D3:D8)得到的。其实就是根据B列为男,C列大于50这两个条件,筛选D列并返回。其实此时返回的数组长度还是D3到D8的内容,长度为6。只是不满足上述两个条件是被标记为FALSE。

具体大家还有疑惑的,可以用【公式】->【公式求值】进行单步操作,一步一步观察发生了什么?

请给这篇日志评个分吧~!

本文评分: 5.6/10 (42 votes)    提示:您还未对本文评分,您可以进行评分并发表您的意见!

加入收藏!

Tags: , ,
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [注册]