EXCEL函数常用技巧浅析(四)数组--随心所欲.xls
上传人:qw****27 上传时间:2024-09-12 格式:XLS 页数:2 大小:198KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

EXCEL函数常用技巧浅析(四)数组--随心所欲.xls

EXCEL函数常用技巧浅析(四)数组--随心所欲.xls

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

技巧解析一:下表为奇偶个数相同的数据,现要对数据进行奇偶相间排列(不包含负数)源数据结果235235343722464737224635354734公式:=ABS(SMALL(-1^A4:A9*A4:A9,(6-ROW(1:6))*MOD(ROW(1:6),2)+INT(ROW(2:7)/2)))公式解析:此公式主要是对SMALL函数的数组化构造,SMALL与LARGE函数的两个参数都支持数组,在构造数组的时候是用得比较多的.第一步:我们先来看一下SMALL函数的第一参数的构造过程,先用技巧一里面的-1^N的方法来区分奇偶数,再与源数据相乘,这样结果就把奇数转化为负数,偶数不变区分奇偶源数据生成数组-1235-235134341*2462461372372-135-35-147-47=-1^A4:A9第二步:根据第一步生成的结果,我们就要考虑第二参数的设置,可以设想一下,我们如何排列才能奇偶相间,从上一步的结果我们可以看出,如果用SMALL函数来构造把SMALL函数的第二参数转化为以下数组就可以了.设想的第二参数测试63721-23552462-474343-35=SMALL(-1^A4:A9*A4:A9,B27:B32)从测试结果来看,这种办法是行得通的,即使源数据里面有相同数字,得出的结果也会是正确的,现在我们就要来考虑如何才能构造成这种数组转化过程:(6-ROW(1:6))*MOD(ROW(1:6),2)+INT(ROW(2:7)/2)51516400113*13+25200221113400033=6-ROW(1:6)=MOD(ROW(1:6),2)=(6-ROW(1:6))*MOD(ROW(1:6),2)=INT(ROW(2:7)/2)=(6-ROW(1:6))*MOD(ROW(1:6),2)+INT(ROW(2:7)/2)第三步:组装SMALL函数的第一与第二参数都构造出来了,问题也就简单了,我们只要把两个构造好的参数装入SMALL函数就好了,再用ABS函数把负数转为正数.结果372235246473435=ABS(SMALL(-1^A4:A9*A4:A9,(6-ROW(1:6))*MOD(ROW(1:6),2)+INT(ROW(2:7)/2)))当然,实现这种奇偶相间的法办还有很多,请用其它办法试解此题,比如换一种思维:=ABS(SMALL(-1^A4:A9*A4:A9,MOD(ROW(1:6),2)*3+INT(ROW(2:7)/2)))技巧解析二:源数据表为某公司三种产品的销售情况情况,单号中包含了日期信息,例如A62单元格ULK-20110423-CC中的数字代表,2011年4月23日,源数据表每种产品是按日期降序排列的,现在要求按查询表的数量查询从最晚时间到每种产品累计到查询表的数量的销售明细。(此例最后的结果是多单元格数组公式,非内存数组)源数据表查询表单号物料名称销售数量KK-LL-A1GG-LL-B1FF-LL-C1单号物料名称销售数量ULK-20110423-CCKK-LL-A112462110341176ULK-20110423-CCKK-LL-A1124ULK-20110419-CCKK-LL-A1497ULK-20110419-CCKK-LL-A1497ULK-20110415-CCKK-LL-A1637ULK-20110411-CCGG-LL-B1215ULK-20110410-CCKK-LL-A1847ULK-20110407-CCGG-LL-B1819ULK-20110411-CCGG-LL-B1215ULK-20110430-CCFF-LL-C1988ULK-20110407-CCGG-LL-B1819ULK-20110425-CCFF-LL-C1188ULK-20110402-CCGG-LL-B1407ULK-20110430-CCFF-LL-C1988ULK-20110425-CCFF-LL-C1188ULK-20110315-CCFF-LL-C1149公式:=INDEX(A:C,SMALL(IF((MMULT((ROW($1:$10)>=COLUMN(A:J))*(B62:B71=TRANSPOSE(B62:B71)),C62:C71)<=E62:G62)*($B62:$B71=E61:G61),ROW(62:71),4^8),ROW(1:29)),{1,2,3})&""公式解析:此题解法看起来比较复杂,但只要你对前面介绍的数组基础理解透了,再有一点点MMULT函数的基础,其实也不是很难,解法的关键在于数组的变化,现在我们就一层一层来剖析此条公式,此例解析比较简单,目的想让大家自己动手,一步一步去理解,为什么要这样构造?这样构造的目的何在?然后再转化成自己的功力。第一步:首先来