CountIfs变量范围

时间:2015-05-26 15:32:15

标签: excel vba excel-vba

如上所述,我对下面显示的代码没有任何问题。

但是,我不会总是有5520行,所以我尝试将range("L2:L5520")替换为range(cells(2,12),cells(rng.Rows.Count,12)),其中rng在上面预定义为范围,而rng.Rows.Count上的监视确认了当前值是5520。

For r = 7 To 11
    For c = 2 To 5
        Cells(r, c) = Application.WorksheetFunction.CountIfs(Sheets("PA2_Data").range("L2:L5520"), Sheets("PA2_Tables").Cells(6, c), Sheets("PA2_Data").range("F2:F5520"), Sheets("PA2_Tables").Cells(r, 1))
    Cells(r, 6) = Application.WorksheetFunction.Sum(Sheets("PA2_Tables").range(Cells(r, 2), Cells(r, 5)))
Next r

使用range(cells(2,12),cells(rng.Rows.Count,12))我收到错误1004,应用程序定义或对象定义的错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

不确定是否声明了rng使得你所拥有的声明能够奏效,但你可能想要做的是使用"最后一行"变量而不是你正在使用的rng。

所以试试这个:

 Dim lastrow As long
 Dim ws As Worksheet

 Set ws = Sheets("PA2_Tables")
 lastrow = ws.Cells(ws.rows.count, "A").end(xlUp).row

 ....

For r = 7 To 11
    For c = 2 To 5
        Cells(r, c) = Application.WorksheetFunction.CountIfs(Sheets("PA2_Data").range("L2:L" & lastrow), Sheets("PA2_Tables").Cells(6, c), Sheets("PA2_Data").range("F2:F" & lastrow), Sheets("PA2_Tables").Cells(r, 1))
        Cells(r, 6) = Application.WorksheetFunction.Sum(Sheets("PA2_Tables").range(Cells(r, 2), Cells(r, 5)))
    Next c
Next r

With range(cells(2,12),cells(lastrow,12)) 


......