excel - 如何通过VBA填充以下模式的公式但保留单元格中的公式?

标签 excel vba

我想在各行中添加具有如下模式的公式。有没有简单的方法通过VBA?

Cell AB16 = SUM(AC9:AC13)/SUM(AB9:AB13)

Cell AC16 = SUM(AD8:AD12)/SUM(AC8:AC12) 

Cell AD16 = SUM(AE7:AE11)/SUM(AD7:AD11)

Cell AE16 = SUM(AF6:AF10)/SUM(AE6:AE10)

Cell AF16 = SUM(AG5:AG9)/SUM(AF5:AF9)
……
等等。
我尝试使用 .formula 函数提取公式,并尝试创建单独的循环来吸收字母中的递增模式和数字中的递减模式。这里我面临的问题是直到 A 到 z 我可以将循环从 ascii 65 增加到 90。超出 z 之后,它变得乏味,因为我需要跳转到 AA。
有没有更好的方法可以通过 VBA 实现上述公式跨行填充,但我希望公式格式与 Sum(xxx:xxx)/sum(yyy:yyy) 相同?限制是,我不能在这些单元格中通过宏运行硬编码数字。此外,也不能在这些单元格中使用偏移公式。这些单元格只能接受 Sum(xxx:xxx)/sum(yyy:yyy) 格式。

最佳答案

与 Excel 一样,您无需担心字母表。行和列实际上是编号的,字母只出现在最后,只是为了您的方便。您可以随意忽略它们并说in R1C1这是 Excel 的母语:

Dim target As Range
Set target = Range("AB16:AF16")

Dim start_offset As Long
start_offset = 2

Dim c As Range
For Each c In target
  c.FormulaR1C1 = "=SUM(R[-" & (start_offset + 5) & "]C[1]:R[-" & (start_offset + 1) & "]C[1])/SUM(R[-" & (start_offset + 5) & "]C:R[-" & (start_offset + 1) & "]C)"
  start_offset = start_offset + 1
Next

关于excel - 如何通过VBA填充以下模式的公式但保留单元格中的公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70629212/

相关文章:

excel - Power Query 附加到现有表

excel - 如何将 Excel 值转换为存储桶?

c# - 在 C# 或 VBA 中以编程方式将 Jpeg 图像插入到 Visio 绘图中

vba - 如何修改Excel VBA、用户窗体中的日期格式

PHP 导出带有 BOM 的 CSV UTF-8 不起作用

excel - 排序列表但保留单个单元格的格式

excel - M - 将累积值(运行总计)转换为实际值

excel - 按下“刷新”或“全部刷新”按钮后如何调用宏?

excel - 使用组合框

vba - 如何禁用保存功能