|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
需求:
做一个excel公式,要求在一个公式里实现、不要加辅助列:
先选出B列=2018、G列>0 的行;
然后在符合条件的行里、选出每日内J值最大的行;
若这些行的E列不等于"请假"、K列不等于"1"、L列>0.01;
则把他们的L值相乘。
以前“micch ”给过一个公式:
=PRODUCT(IF((COUNTIFS(A:A,A2:A463,B:B,2018,G:G,">0",J:J,">"&IF((B2:B463=2018)*(G2:G463>0),J2:J463-ROW(2:463)%%%%%))=1)*(E2:E463<>"请假")*(K2:K463<>1)*
(L2:L463>1%),L2:L463,1))
这公式很不错,不过这种算法每一个日期都要从头到尾把所有行计算过才得出最终结果。而我实际数据有几十万行,计算一次数据就久得可怕了。
我想折中一下,我先把日期那行倒序排好,看哪个大神帮再弄一个公式。
考虑到每个日期只有几行~几十行,而且全部排在一起,如果有合适的公式计算数度应该会快不少。
拜托了。
|
|