如上所述,我对下面显示的代码没有任何问题。
但是,我不会总是有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,应用程序定义或对象定义的错误。
有什么建议吗?
答案 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))
......