【问题标题】:Calculating Averages of every 6th cell VBA计算每 6 个单元格 VBA 的平均值
【发布时间】:2021-05-21 14:29:53
【问题描述】:

我希望计算同一个电子表格中多个表格中一系列单元格的平均值。

每个经理都有一个表,每个表中都有一些统计信息,例如总活动、呼出电话和信用。每张桌子都位于另一张桌子的下方,例如Danny 的桌子可能位于第 1-5 行,Ann 的 7-12,Katie 的 14-19。我需要找到每个统计数据的平均值并将其输出到我的摘要页面。

我尝试过使用Application.WorksheetFunction.Average,但由于范围分散在各个行中,因此无法正常工作。但是我确实知道每个变量每 6 行出现一次,所以我尝试了For i = 2 To lastRow Step 6,它将值输出到单元格并根据该单元格范围计算平均值,但如果可能的话,我宁愿有更直接的东西。

谁能提供有效的解决方案?

下面的数据示例。希望获得 4 个变量中每个变量的平均值。

【问题讨论】:

标签: excel vba


【解决方案1】:

备选方案 1

如果 B 列中的平均值不是您想要的平均值,您可以使用 SUMPRODUCT

在除 B 列之外的任何其他列的任何单元格中输入此公式。它将计算从第 2 行开始的每 6 个值的平均值。

=SUMPRODUCT(B:B*1*NOT(ISBLANK(B:B))*(MOD(ROW(B:B),6)=2))/SUMPRODUCT(1*NOT(ISBLANK(B:B))*(MOD(ROW(B:B),6)=2))
  • B:B 列中所有值的数组。
  • 1*NOT(ISBLANK(B:B)) 1 或 0 的数组,B 列的非空白单元格为 1,空白单元格为 0。
  • 1*(MOD(ROW(B:B),6)=2) 1 或 0 的数组,1 在第 2、8、14 行等第四行

SUMPRODUCT(B:B*1*NOT(ISBLANK(B:B))*(MOD(ROW(B:B),6)=2)) 从第 2 行开始,每隔 6 个单元格对 B 列中的所有非空白单元格求和。 SUMPRODUCT(1*NOT(ISBLANK(B:B))*(MOD(ROW(B:B),6)=2)) 从第 2 行开始,每隔 6 个单元格计算 B 列中的所有非空白单元格。

为了加快公式,您可以根据具有值的行数将 B:B 替换为例如 B1:B100

备选方案 2

如果除了您想要平均的值之外什么都没有,那么您可以按照 Dominique 的建议使用 SUBTOTAL=SUBTOTAL(1,B:B)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2018-10-15
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多