中位数多个标准vba
我用多个标准来计算中位数,计算速度很慢,我想用vba来计算,因为计算可能会更快。
我把它连接起来的练习只是一个例子。 执行缓慢是我的真实文件,其中包含11个提供和超过3千行。
计算公式:
IFERROR(MEDIAN(IF(($A$2:$A$44=$N$1)*($E$2:$E$44=J$2)*($B$2:$B$44=$I3)*($F$2:$F$44=$M$1);$G$2:$G$44));"")
使用Ctrl + Shift + Enter进行validation我试过这个VBA代码,但它不起作用
Sub MEDIAN() For Each cell In Range("J3:L9") year = Range("m1") offer = UCase(Range("n1")) month = UCase(Cells(2, cell.Column)) day = UCase(Cells(cell.Row,9)) cell.Value = Application.Evaluate("MEDIAN(IF((" & _ offer & "=R1C14)*(" & _ day & "=RC9)," & _ month & "R2C)," & _ year & "=R1C13)," & _ C7 & "))") Next cell End Sub
链接是: https : //onedrive.live.com/redir?resid=8952CE5DAEF23B26!122&authkey=!AK_xvd_-saszoGs&ithint=file%2cxlsx
这是我的问题的答案,但这是一个沉重的执行:我不会放弃,直到得到一个快速的。
Sub MedianePro()
Application.ScreenUpdating = False
范围( “J3:L9”)clearContents中。
对于Z = 3至9
范围(“j”&Z).FormulaArray = _
“=”IFERROR(MEDIAN(IF((C1 = R1C14) (C5 = R2C) (C2 = RC9)*(C6 = R1C13),C7)),“”“”)“
范围(“k”&Z).FormulaArray = _
“=”IFERROR(MEDIAN(IF((C1 = R1C14) (C5 = R2C) (C2 = RC9)*(C6 = R1C13),C7)),“”“”)“
范围(“l”&Z).FormulaArray = _
“=”IFERROR(MEDIAN(IF((C1 = R1C14) (C5 = R2C) (C2 = RC9)*(C6 = R1C13),C7)),“”“”)“
下一个Z
Application.ScreenUpdating = True
结束小组
祝你今天愉快
不知道速度,但你可以尝试以下
Sub MEDIAN() Range("J3:L9").ClearContents With Range("J3") .FormulaArray = "=IFERROR(MEDIAN(IF(($A$2:$A$44=$N$1)*($F$2:$F$44=$M$1)*($E$2:$E$44=J$2)*($B$2:$B$44=$I3),$G$2:$G$44)),0)" .Copy .Offset(, 1).Resize(1, 2) .Copy .Offset(1).Resize(6, 3) End With