您好我在excel中有一个大文件。我可以使用=AVERAGE(A2:A34315)
计算整个列的平均值并得到它的平均值。现在我试图将整个列除以它的平均值。如果没有我进入新列并手动输入它,是否有更简单的方法可以做到这一点。例如,让我们取平均数为1000
=A2/1000
我不想一直输入或拖动,因为我的文件很大。列从2开始一直到34315.这样做的原因是我试图规范化或缩放数据。
答案 0 :(得分:0)
以下简短程序获取A列中所有数字的AVERAGE并将其存储在B1中。然后,它使用看起来像常见列标题标签的自定义数字格式来伪装数字。基础值用于“缩放”或“标准化”从A列到B列的数字。
Sub scaled()
With Worksheets("sheet4")
.Range("B1").Formula = "=average(a:a)"
.Range("B1").NumberFormat = "\S\c\a\l\e"
.Range("B2:B" & .Cells(Rows.Count, "A").End(xlUp).Row).Formula = "=a2/b$1"
End With
End Sub
您可以在B列中使用公式,例如=A2/AVERAGE(A:A)
,但会一遍又一遍地计算相同的平均值。计算一次并使其“隐藏”应该更有效率。
答案 1 :(得分:0)
尝试以下代码
如果您需要个别百分比,请添加Range("B" & i).NumberFormat = "0.00%"
Sub getavg()
Dim lastrow As Long
Dim avgg As Variant
lastrow = Range("A" & Rows.Count).End(xlUp).Row
avgg = Application.WorksheetFunction.Average(Range("A2:A" & lastrow))
For i = 2 To lastrow
Range("B" & i).Value = Range("A" & i).Value / avgg
'Range("B" & i).NumberFormat = "0.00%"
Next i
End Sub