我正在对数据进行平均(VBA Excel),如下所示:
If n < 8 Then
Sheet2.Cells(i, 20).Value = "=SUM(E" & i & ":S" & i & ")/" & n
Else
Sheet2.Cells(i, 20).Value = "=AVERAGE(LARGE(E" & i & ":S" & i & ", {1,2,3,4,5,6,7,8}))"
End If
n = 0
此代码有效,因为我想要15个值中最好的8个值。
我的问题是如何对x值进行同样的操作(x将通过用户表单0<x<16
引入)。
当然,根据x的不同,我可以使用带有15行的Select Case,但是在我看来,这不是一个很好的编码。
有什么想法吗?
答案 0 :(得分:1)
如果AVERAGEIF
可用:
Sheet2.Cells(i, 20).Value = "=AVERAGEIF(E" & i & ":S" & i & ","">=""&LARGE(E" & i & ":S" & i & "," & x & "))"
对于i = 2和x = 8,公式为:=AVERAGEIF(E2:S2,">="&LARGE(E2:S2,8))
如果不是:
Sheet2.Cells(i, 20).Value = "=SUMIF(E" & i & ":S" & i & ","">=""&LARGE(E" & i & ":S" & i & "," & x & "))/" & x
对于i = 2和x = 8,公式为:=SUMIF(E2:S2,">="&LARGE(E2:S2,8))/8