我有点卡在这里。我在类似这样的工作表中应用过滤器,应用过滤器后它看起来像这样(示例项目 999)
项目清单 数量 Avi。数量标志框
999 12 9 N X1
999 23 17 Y X2
999 1 1 N X14
999 21 3 N X113
我试图获取“标志”列值,(在过滤器内部并且它崩溃了)代码:
With InventorySheet
.AutoFilterMode = False
LRowOnQ = .Cells(Rows.Count, "Q").End(xlUp).Row
.Range("B1").AutoFilter Field:=2, Criteria1:=Project
.Range("D1").AutoFilter Field:=4, Criteria1:=ContractNumber
.Range("N1").AutoFilter Field:=14, Criteria1:=Code
.Range("Q1").AutoFilter Field:=17, Criteria1:=">0"
Set rangeFilteredInventory = .Range("Q1:Q" & LRowOnQ)
ControlFlag = .Range("L2").Value
End With
在过滤器之后,它总是取相同的值。代码:
With InventorySheet
.AutoFilterMode = False
LRowOnQ = .Cells(Rows.Count, "Q").End(xlUp).Row
.Range("B1").AutoFilter Field:=2, Criteria1:=Project
.Range("D1").AutoFilter Field:=4, Criteria1:=ContractNumber
.Range("N1").AutoFilter Field:=14, Criteria1:=Code
.Range("Q1").AutoFilter Field:=17, Criteria1:=">0"
Set rangeFilteredInventory = .Range("Q1:Q" & LRowOnQ)
End With
ControlFlag = InventorySheet.Range("L2").Value
有没有办法取结果范围中最常见的字母?我知道小计中有一个平均选项,但我认为这只是数字。
编辑:尝试代码:
With InventorySheet
.AutoFilterMode = False
LRowOnQ = .Cells(Rows.Count, "Q").End(xlUp).Row
.Range("B1").AutoFilter Field:=2, Criteria1:=Project
.Range("D1").AutoFilter Field:=4, Criteria1:=ContractNumber
.Range("N1").AutoFilter Field:=14, Criteria1:=Code
.Range("Q1").AutoFilter Field:=17, Criteria1:=">0"
Set rangeFilteredInventory = .Range("Q1:Q" & LRowOnQ)
Set ControlRange = .Range("L1:L" & LRowOnQ)
End With
ControlFlag = WorksheetFunction.Subtotal(1, ControlRange.SpecialCells(xlCellTypeVisible))
它甚至不做循环。