我正在尝试构建一个循环,它将从两个单独的工作表中提取数据并将它们放入一个表中。我试图让它将数据放在行的末尾,然后向下移动一行并重复直到它到达表的末尾。 {I} Changes
列我将在事后确定。我只想尝试删除WTD
和This Year
数据。这是我的编码。
Last Year
以下是我所拥有的表格的一个例子。
很抱歉图像质量很差。所有列都按照应有的方式分解。我尝试了几种不同的方法来实现这一目标。因为它现在将通过并将去年信息放入正确的列,但仅限于第一行。我能得到的任何帮助都将不胜感激!
答案 0 :(得分:1)
使用Option Explicit
...否则,使用如此相似的变量名称可能会遇到奇怪的问题。但这不是你的问题。
您的每个方法实际上并没有根据行更改它正在写入的单元格。
例如(删除其他代码):
Function setRawData1()
Set baseFrom1Cell = Sheets("Week").Range("C2")
baseBaseCell.Offset(0, 0) = baseFrom1Cell.Value 'This Year
'Cost
baseBaseCell.Offset(0, 3) = baseFrom1Cell.Offset(0, 1) 'This Year
'Margin
baseBaseCell.Offset(0, 6) = baseFrom1Cell.Offset(0, 2) 'This Year
'Basis Points
baseBaseCell.Offset(0, 9) = baseFrom1Cell.Offset(0, 3) 'This Year
End Function
此函数总是设置完全相同的单元格(无论您的循环状态是什么),因为没有任何东西导致它们在行中偏移。
所以当你打电话
If i = ((4 Mod 2) <> 0) Then
setRawData1 'write to same row every time...
Else
setRawData2 'write to same row every time...
End If
我建议修改你的功能:
Function setRawData1(int rowOffset)
baseBaseCell.Offset(rowOffset, 0) = baseFrom1Cell.Value 'This Year
'Cost
baseBaseCell.Offset(rowOffset, 3) = baseFrom1Cell.Offset(0, 1) 'This Year
'Margin
baseBaseCell.Offset(rowOffset, 6) = baseFrom1Cell.Offset(0, 2) 'This Year
'Basis Points
baseBaseCell.Offset(rowOffset, 9) = baseFrom1Cell.Offset(0, 3) 'This Year
然后将正确的偏移值传递给每个