我有一个Excel文件,里面有很多列和很多行。一列,说A有ID号码。另一列,说G有价格。列A具有重复的ID号码,但并非所有的号码都重复相同的次数。有时只是一次,其他时间2,3或几次。该行的每一列G都有唯一的价格。自动计算不同数字值的平均值
基本上,我需要平均A列给定ID的价格。如果每个ID重复相同的次数,这将是非常简单的,但因为他们不是我必须手动做我的平均计算为每个分组。由于我的电子表格有许多行,这是永远的。
下面是一个例子(H列是我目前手动计算平均值):
A ... G H
1 1234 3.00 3.50
2 1234 4.00
3 3456 2.25 3.98
4 3456 4.54
5 3456 5.15
11 8890 0.70 0.95
13 8890 1.20
...
所以在上面的例子中,平均价为ID#1234将是3.50。同样,ID#3456的平均价格为3.98,#8890的平均价格为0.95。
- 注意行5和行11之间缺少行,行12也缺失?那是因为他们被其他原因过滤掉了。我需要从我的计算中排除这些隐藏的行,并只计算可见行的平均值。
我试着写一个VBA脚本,将自动计算出这一点,然后打印在列H.每个ID平均值
下面是一些代码,我认为:
Sub calcAvg()
Dim rng As Range
Set rng = Range("sheet1!A1:A200003")
For Each Val In rng
Count = 0
V = Val.Value '''V is set equal to the value within the range
If Val.Value = V Then
Sum = Sum + G.Value
V = rng.Offset(1, 0) '''go to next row
Count = Count + 1
Else
'''V = Val.Value '''set value in this cell equal to the value in the next cell down.
avg = Sum/Count
H = avg '''Column G gets the avg value.
End If
Next Val
End Sub
我知道上述代码存在一些问题。我不太熟悉VBA。此外,这将打印平均每次在同一行。我不知道如何迭代整个行。
这似乎过于复杂。理论上它是一个简单的问题,但缺少的行和不同数量的ID#重复使得它更加复杂。
如果这可以在Excel函数中完成,那会更好。
任何想法或建议将不胜感激。谢谢。
你有没有试过我的答案? – matzone