我想在各行中添加具有如下模式的公式。有没有简单的方法通过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/