我需要计算VBA中不同数字的平均值,但它已变得复杂,我不确定接下来要做什么。在VBA中计算平均值
我转向谷歌寻找潜在的解决方案,但我没有发现任何相关的问题。
这里是我的表:
每个ID:
- ...是一个非唯一编号。
- ...有一个关联的值。
每个ID的平均值需要在VBA中计算。
例
- 与 'ID1' 的ID的值是2,3和4,因此具有3个
- 的值的平均值与 'ID2' 的ID均为4,所以有4
- 平均...
我现在要么一整列计算平均值或简单重复的值。
我将非常感谢您的帮助和建议。
我需要计算VBA中不同数字的平均值,但它已变得复杂,我不确定接下来要做什么。在VBA中计算平均值
我转向谷歌寻找潜在的解决方案,但我没有发现任何相关的问题。
这里是我的表:
每个ID:
每个ID的平均值需要在VBA中计算。
例
我现在要么一整列计算平均值或简单重复的值。
我将非常感谢您的帮助和建议。
不够公平。如果你有你的心脏上的VBA的解决方案设置这一项应该做的伎俩(你的例子)......
Sub Av()
Dim LastRow As Long
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
Cells(i, 3).Value = Application.WorksheetFunction.SumIf(Range("A2:A" & LastRow), Range("A" & i), Range("B2:B" & LastRow))/_
Application.WorksheetFunction.CountIf(Range("A2:A" & LastRow), Range("A" & i))
Next
End Sub
该解决方案将在您发布的例子保存您的表行(非由ID是唯一的)
太棒了。非常感谢你。它工作完美。现在我可以结束我的计算:) –
如果你不想使用数据透视表作为wilson88建议你可以尝试以下方法,
创建从没有重复的ID在它的数据集的列表。
在此列表旁边的列中,您可以执行sumif公式以从您的每个ID的数据集中获得总和。
然后在此旁边的列中,您可以使用countif公式来计算用户ID出现的次数。然后你可以通过countif列来划分sumif列来获得平均值。
一旦你得到的这个想法,你可以将公式合并为一个单元格为以下
= SUMIF(“ID范围”,“ID”,“总和范围”)/ COUNTIF(“ID_RANGE” “ID”)
这将是生成数据透视表的手动方式,您可以使用vba来生成公式。
Sheet1.range(“A1:A100”)。值=“= enterformulahere”
嗨。你有没有考虑使用数据透视表来做到这一点?当您在值列中拖动时,只需将值字段设置更改为'平均值'... – 2016-11-30 13:02:31
@ wilson88谢谢。我会尽量使用它。但根据我的任务,我需要在VBA中做到这一点。我有几个我在VBA中做过的计算,这个也应该是其中的一部分。 –
嗨,您可以编写VBA创建数据透视表,如@ wilson88所示,并添加使用VBA的vlookup公式,该公式将数据透视表中的平均值拉到您希望的列。 –