我有一个 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 函数中完成,那就更好了。
任何想法或建议将不胜感激。谢谢。