|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 iWenShan 于 2018-8-5 16:24 编辑
此问题分两个步骤解决:
一、提取符合条件的不重复城市名称(F列):
1.F列的公式使用"index+small+if+match"组合,提取出所有符合条件且不重复的城市名称,公式如下:
F2=IFERROR(INDEX(B:B,SMALL(IF(IFERROR(((ROW(B:B)=MATCH(B:B,B:B,))*(A:A<$E$2)),0),ROW(B:B),9E+307),ROW()-1)),"")
2.以上函数是数组函数,要使用三键结束输入。
二、求最大累积量的问题(G列和H列):
1.G列的公式使用的是经典"index+small+if+序号"组合,先计算"有多少条数据符合条件",再提取最后一条数据;
G2=INDEX(C:C,SMALL(IF((F2=B:B)*(C:C<>0)*(A:A<$E$2),ROW(B:B),9E+307),SUMPRODUCT((F2=B:B)*(C:C<>0)*(A:A<$E$2))));
2.根据题主需求,建议使用"index+large+if+序号"组合,更加简洁,公式如下:
H2=INDEX(C:C,LARGE(IF((F2=B:B)*(C:C<>0)*(A:A<$E$2),ROW(B:B),0),1));
3.使用下面那个公式,免去了计算"有多少条数据符合条件"的步骤,序号写"1",直接提取最后一个;
4.注意,改用large函数时,if函数中的错误值要从一个较大的值(9e+307)改为一个较小的值(0);
5.以上两个都是数组函数,要使用三键结束输入。
6.具体公式使用情况见附件。
三、函数效率问题。
1.由于函数全部使用整列引用,效率非常低。
2.函数引用区域的优化跟本问题关系不大,就看题主自己了。
help(iWenShan-Solution).zip
(13.94 KB, 下载次数: 46)
|
|