谁能帮我这个?对于此特定函数,它为“sheet1.Range(”a1:a“&RowNbr)获取运行时错误1004 .AdvancedFilter操作:= xlFilterCopy,CopyToRange:= sheet1.Range(”J1“),唯一:= True “
这是完整的代码:
Sub stock_exercise()
Dim RowNbr As Long
Dim uniqueticker As Long
Dim totalvolume As String
Dim r As Long
Dim sheet1 As Worksheet
Set sheet1 = ThisWorkbook.Sheets("A")'determine row count
RowNbr = sheet1.Range("A1", sheet1.Range("A1").End(xlDown)).Rows.Count
'copy and past unique ticker from column a to column j
sheet1.Range("a1:a" & RowNbr).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=sheet1.Range("J1"), Unique:=True
sheet1.Range("J1").Value = "ticker"
uniqueticker = sheet1.Range("j1", Range("j1").End(xlDown)).Rows.Count
'sumif of each ticker
For r = 2 To uniqueticker
totalvolume = Application.SumIf(sheet1.Range("a1:a" & RowNbr), sheet1.Cells(r, 10), sheet1.Range("g1:g" & RowNbr))
sheet1.Cells(r, 11).Value = totalvolume
Next r
End Sub
3 回答
尝试清除正在复制高级过滤器值的目标单元格的内容,看它是否有效 .
失败时,选择Debug并查看"Immediate Window" . 在即时窗口中,键入
?RowNbr
并按Enter键 . 您将看到RowNbr的值...它可能为null(导致错误) . 如果是,您可以在立即窗口中备份代码,例如,每一行依次粘贴?在前 . 您可以检查范围是否符合预期,工作表甚至工作簿,例如?sheet1.name
和?thisworkbook.name
.您还可以粘贴每行的细分,以检查其值是否符合预期,例如
?sheet1.Range("a1:a" & RowNbr).address
我做了一些代码清理和下面的代码 . 我只测试了空标准范围,这意味着列K(代码中的第11列)填充了零值,因此如果您使用此代码重新显示
run-time error 1004
,则表明问题出在此处 . 在这种情况下,请确保SumIf函数的条件范围中的所有值都有效 .