vba代码以平均Excel数据

时间:2016-04-30 10:48:26

标签: vba excel-vba excel

我有三列“SAMPLE ID”结果,平均值

例如:

SAMPLE ID 
1201
1201
1201
1201
1300
1300
1300
1300
1400
Results 
400
490
340
400
400
490
233
400
290

我使用以下公式来获得第3列中的平均值。我希望在vba中完成此操作。我的数据集很长(只显示了几个)

  1. 我可以使用vba将此公式填充到其他单元格中(即使不在第一个单元格中输入)
  2. 2.我们可以将其定义为字符串并将其复制下来吗?所有的帮助都是适当的。或任何其他编码方式谢谢

    = IF(A2<>A1,AVERAGEIF(A2:INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0)),A2,B2:INDEX($B2:INDEX(B:B,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0))),"")
    

1 个答案:

答案 0 :(得分:0)

试试这个

Sub main()
With Worksheets("averages") '<== change it as per your actual worksheet name
    Range("C1:C" & .Cells(.Rows.Count, 1).End(xlUp).Row).formula = "= IF(A2<>A1,AVERAGEIF(A2:INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0)),A2,B2:INDEX($B2:INDEX(B:B,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0))),"""")"
End With
End Sub