我用多个标准计算了中位数,计算速度慢我想用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验证 我试过这个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
答案 0 :(得分:0)
这是我的问题的答案,但这是一个沉重的执行: 我不会放弃,直到得到一个快速的。
Sub MedianePro()
Application.ScreenUpdating = False
范围(" J3:L9&#34)。clearContents中
对于Z = 3到9
范围(" j"& Z).FormulaArray = _
" = IFERROR(MEDIAN(IF((C1 = R1C14)(C5 = R2C)(C2 = RC9)*(C6 = R1C13),C7)),#34 ;""")"
范围(" k"& Z).FormulaArray = _
" = IFERROR(MEDIAN(IF((C1 = R1C14)(C5 = R2C)(C2 = RC9)*(C6 = R1C13),C7)),#34 ;""")"
范围(" l"& Z).FormulaArray = _
" = IFERROR(MEDIAN(IF((C1 = R1C14)(C5 = R2C)(C2 = RC9)*(C6 = R1C13),C7)),#34 ;""")"
下一个Z
Application.ScreenUpdating = True
End Sub
度过愉快的一天
答案 1 :(得分:0)
不了解速度,但您可以尝试以下
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