【问题标题】:Excel macro for averages平均值的 Excel 宏
【发布时间】:2014-09-17 13:00:21
【问题描述】:

我的 VBA 脚本有问题。我想解决方案很简单,但我就是想不通....

所以基本上,我有一个包含许多工作表的工作簿。每个工作表都包含完全相同的表格格式(相同的行数和列数)。我想做的是创建一个新的工作表,并在该工作表中包含所有这些值的平均值。

因此,例如在单元格 B2 中,我希望获得所有其他工作表中单元格 B2 的平均值。因此,我创建了一个宏来执行此操作,这不是问题,但是问题是,在该宏中,所有工作表都由它们的名称引用,并且由于我有许多具有不同名称工作表的工作簿,所以这不起作用.因此,我尝试将第一张工作表的名称更改为工作表的实际参考 - 即 Sheet(1) 和最后一个作为 Sheet(x) - 其中 x 是我之前计算的工作表数。不幸的是代码不起作用,有人可以向我建议如何修改它以使其正常工作吗?我只是复制代码中有问题的部分:

x = Sheets.Count
Sheets.Add After:=Sheets(x)
Range("B2").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(Sheets(1):Sheets(x)!RC)"

【问题讨论】:

  • 嗯,我在 VB 中已经拥有的所有其他东西,我想这不是一个大问题,我认为它会有一个非常简单的解决方案 - 基本上我所需要的就是能够选择所有该工作簿中的工作表(创建的要显示平均值的工作表除外)
  • 是的,但仍然没有运气
  • 从我发现的情况来看,括号中的数字是指第 n 个工作表,所以第一个应该是 Sheets(1) 并且变量 x 是之前计算的并且等于工作表的数量(参见上面),所以我假设 Sheets(x) 然后会导致最后一个工作表

标签: excel vba average


【解决方案1】:

试试这个。您没有偏移工作表名称(实际上,您甚至没有使用工作表名称。在公式的上下文中,Sheets(1) 没有意义。您需要使用Sheets(1).Name 和偏移量适当的:

"=AVERAGE('" & Sheets(1).Name & ":" & Sheets(x).Name & "'!RC)"

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多