【问题标题】:Adding a formula to noncontinuous cells from multiple columns in Excel VBA将公式添加到 Excel VBA 中多列的非连续单元格
【发布时间】:2016-06-24 23:12:12
【问题描述】:

我有一个预测数据电子表格,我需要不断更新预测单元格。手动执行此操作需要数小时(数百个单元格)。 我正在尝试编写一个在每个单元格中编写公式的宏,但我被困在语法上。这是我的原型。

问题:如何正确遍历“预测”选项卡中的单元格?

Sub forecastBuild()
Dim rng As Range, i As Range, colCount As Integer, col As Integer
colCount = 14
Set rng = Range("D6, H6, L6, P6, U6, Y6, AC6, AH6, AL6, AQ6, AU6, AY6")

For Each i In rng
    For col = 3 To colCount
        i.Formula = "=Forecast!$" & columns(, col) & "$7"
    Next col
Next i
End Sub

rng 是我的输出范围(现在要编写公式),我从Forecast!C7:Forecast!N7 获取数据。我不相信columns(, col) 语法是正确的,并且 VBA 没有将整数转换为字符串。谢谢。

【问题讨论】:

  • 即使你得到了列,你的内部循环也只会在每个单元格中填充=Forecast!N7,因为这是循环中的最后一列,每个循环都会覆盖前一个。
  • 例如,D6 中的最终公式是什么?会是 Forecast!C7:N7 的总和吗?

标签: vba excel


【解决方案1】:

我想这就是你想要的:

Sub forecastBuild()
Dim rng As Range, i As Range, colCount As Integer, col As Integer
Dim ws As Worksheet
Set ws = ActiveSheet

Set rng = ws.Range("D6, H6, L6, P6, U6, Y6, AC6, AH6, AL6, AQ6, AU6, AY6")
colCount = 3
For Each i In rng
    i.Formula = "=" & Sheets("Forecast").Cells(7, colCount).Address(0, 0, xlA1, True)
    colCount = colCount + 1
Next i
End Sub

【讨论】:

  • @Ralph 感谢这些火腿拳头有时会打错键。
  • 你的手太快了(飞过键盘),因此键盘可能错过了你肯定击中的e
  • @ScottCraner 感谢您的帮助。我应该更清楚我想要公式做什么。 VBA 对我来说是新的。
【解决方案2】:

我不太确定我是否理解正确。但也许你正在寻找类似的东西:

Option Explicit

Sub forecastBuild()

Dim rng As Range, i As Range, colCount As Integer

Set rng = ThisWorkbook.Worksheets("Sheet1").Range("D6, H6, L6, P6, U6, Y6, AC6, AH6, AL6, AQ6, AU6, AY6")

For Each i In rng
    i.Formula = "=Forecast!" & Cells(7, 3 + colCount).Address
    colCount = colCount + 1
Next i

End Sub

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2017-04-18
    • 2014-11-28
    • 1970-01-01
    相关资源
    最近更新 更多