ここでちょっと立ち往生しています。このようなシートにフィルターを適用しています。フィルターを適用すると、次のようになります (例のアイテム 999)
品目請求書 数量 Avi。フラッグBOX
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))
そして、それはループさえしません。