【发布时间】:2019-11-29 10:10:21
【问题描述】:
我想过滤在 B 列中可能有也可能没有五个关键字(红色、蓝色、橙色、绿色和黄色)的报告,这些关键字与不同列中的数字相关联
我想在生成的报告中获取与每个关键字关联的列的总和
但是,报告可能包含也可能不包含全部五个关键字;每天可能会有所不同,例如有或没有黄色
我将 C 列中第一个关键字(一个标准)的总和粘贴到其他地方,它可以工作!
但是一旦我搜索第二个关键字,就会发生错误:这不能应用于单个单元格,请选择一个范围内的单个单元格(运行时错误 1004)。有什么想法吗?
第二个问题是如何设置我的范围 (C2:C1000) 和 (B2:B1000) 以及 C 列中的所有过滤数字和 B 列中的关键字,因为我可以有超过 1000 行或位置超过 1000 的行
Set rng = ws.Range("C1:C" & lastrow) 'but to no avail
Sub filterVBA()
Dim lastrow As Long
Dim visibleTotal As Long
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("C2:C1000")
Columns("B:B").Select
Selection.AutoFilter
ActiveSheet.Range("B2:B1000").AutoFilter Field:=1, Criteria1:="red"
visibleTotal = Application.WorksheetFunction.Sum(rng.SpecialCells(xlCellTypeVisible))
Windows("Book6").Activate
Range("A1").Value = visibleTotal
Columns("B:B").Select
Selection.AutoFilter
ActiveSheet.Range("B2:B1000").AutoFilter Field:=1, Criteria1:="blue"
Windows("Book6").Activate
Range("A2").Value = visibleTotal
End Sub
【问题讨论】:
-
SpecialCells如果没有找到单元格会抛出错误,你需要处理它。将SpecialCells调用分配给包装在错误处理程序中的 Range 变量,然后仅在找到某些内容时继续。 -
关于范围,使用
End(xlUp)技术 -
报告中确实存在第二个条件,但我不知道为什么会弹出该错误
-
Selection.Autofilter 行的 vba 标志