2016-06-24 92 views
1

我有一个预测数据的电子表格,我需要不断更新预测单元格。这样做手动需要数小时(这是几百个单元格)。 我试图写一个宏,在每个单元格中写入一个公式,并且我停留在语法上。这是我的原型。将公式添加到Excel中的多个列的非连续单元格VBA

问题:如何在Forecast选项卡中正确循环单元格?

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不会将整数转换为字符串。谢谢。

+0

即使你得到列算出你的内循环只会填充'=预测N7'在每一个细胞,因为这是最后一列!循环,每个循环都会超越前一个循环。 –

+0

因此,例如,D6中的最终公式是什么?它会是Forecast!C7:N7的总和吗? –

回答

2

我想这是你想要什么:

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 
+0

@Ralph感谢这些火腿拳头有时碰错钥匙。 –

+1

你的双手速度太快(飞过键盘),因此键盘很可能错过了你确实击中的'e'。 – Ralph

+0

@ScottCraner感谢您的帮助。我应该更清楚我想要公式做什么。 VBA对我来说是新的。 –

1

我不太清楚,如果我理解正确的。但是,也许你正在寻找沿此线的东西:

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 
相关问题