【问题标题】:Excel 2007 using VBA write formula to merged cellsExcel 2007 使用 VBA 将公式写入合并单元格
【发布时间】:2015-05-08 15:35:08
【问题描述】:

我有一个从 G11 开始的值列表,并将一个可变长度向下延伸到 G 列。我有一个字符串数组,其中包含要平均的 G 列数据范围的地址。在从 H11 开始的 H 列中,我合并了希望显示平均值的单元格。一起平均的 G 列单元的数量也不同。我尝试的以下代码失败了,因为公式是按原样输入的,而不是将 range(i) 数组值放入公式中。

For i = 0 To range_num
    ActiveCell.Formula = "=AVERAGE(ranges(i))"
Next i

ranges() 包含要平均的范围(以字符串形式)。例如:

ranges(i) = "G11:G15"

fori = 0 和 range_num 是要进行的平均次数。

每个 G 列值仅包含在 1 个平均值中,每组要平均的值是连续的,并且每组都直接位于我希望出现平均值的合并单元格的左侧。有没有人对我如何更好地格式化我的代码来实现这一点有一些见解?任何想法表示赞赏,谢谢。

【问题讨论】:

  • ActiveCell.Formula = "=AVERAGE(" & ranges(i) & ")" ?
  • 如果您附上工作表的 sn-p 以帮助可视化问题,将会有所帮助。

标签: vba excel excel-formula


【解决方案1】:

如果我的解释正确,您正在寻找一个代码 sn-p,它将遍历一系列单元格并根据在另一个单元格中找到的文字字符串设置公式。请尝试以下操作:

sub SetCellFormulas()

dim sWS as worksheet
dim aCell as range
dim aRange as range
dim Lrow as long

set sws = thisworkbook.sheets("yourworksheetname")

'*** Locate last cell with values in column G
lrow = sws.Range("G11").end(xldown).row

'*** Set range to loop through
set arange = sws.Range("G11:G" & Lrow)
for each acell in arange
  '*** set formula of cell 1 to the left of G to the concatenated formula
  aCell.offset(0,1).formula = "=AVERAGE(" & acell.value & ")"
next acell

end sub

【讨论】:

  • 我有formatted你的答案,以提高其可读性。
【解决方案2】:

公式输入“原样”的原因是您需要将其连接到字符串中。

For i = 0 To range_num
    ActiveCell.Formula = "=AVERAGE(" & ranges(i) & ")"
Next i

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多