如何变量自动填充语句以处理不同数量的列

时间:2017-03-15 14:08:54

标签: excel vba excel-vba

我是VBA的新手,所以我很欣赏你对我的耐心。我汇总了一些代码来汇总按年份,付款期和时间报告代码的时间报告。年/薪资期间列在A列和B列的唯一组合中,唯一的时间报告代码列在顶部。我的工作表正文包含SUMIFS函数,可以访问另一个工作表上的原始数据,并使用当前行中的年份和支付期间以及列标题中的时间报告代码。

在编写数据顶行的第一组SUMIFS函数时,我没有任何问题。我循环从3(C)到LastCol的列(在我的测试数据-J的情况下)并将SUMIFS函数写入单元格C2,然后将该函数自动填充到去年/支付期间组合。我遇到的问题是当我尝试使用自动填充将此公式复制到底部时。当我对列进行硬编码时没有问题。然后我意识到我可以有3个独特的时间报告代码或15个。所以我决定只要有更多的列要处理就需要循环。

这是我正在使用的循环。现在我得到了一个语法错误,但是昨天我正在尝试大量不同的方法来解决这个问题。

Sub Macro10()

Dim rwNum As Integer
Dim colMin As Integer
Dim colMax As Integer
Dim LastCol As Integer
Dim colIndex As Integer
Dim currentCell As String

Sheets("Sheet2").Select

rwNum = 2
colMin = 3
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
colMax = LastCol + colMin

For colIndex = colMin To colMax
    Cells(rwNum, colIndex).Select
    currentCell = Cells(2, colIndex).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    ActiveCell.Formula = "=SUMIFS('Report Output'!$O:$O,'Report Output'!$K:$K,'Sheet2'!$A2,'Report Output'!$L:$L,'Sheet2'!$B2,'Report Output'!$N:$N,'Sheet2'!" & Cells(1, colIndex).Address(RowAbsolute:=True, ColumnAbsolute:=False) & ")"

    Range(currentCell).AutoFill Range(currentCell) & ":" & Range(currentCell).Column & Range("B" & Rows.Count).End(xlUp).Row) 'Range(currentCell & ":" & Range(currentCell).Column & Range("B" & Rows.Count).End(xlUp).Row)
Next colIndex

End Sub

我知道为什么我的自动填充昨天失败 - currentCell包含单元格地址C2以指示我想要复制到最后一行数据的单元格,但当我将currentCell插入Range命令时,如上所示,单元格C2中的SUMIFS函数是currentCell中显示的值,而不是我想要的单元格地址。

我确定这是一个非常简单的语法问题,但我并不是我需要编写此代码的地方。非常感谢。

0 个答案:

没有答案