返回列表 上一主題 發帖

[發問] VBA依條件自動篩選

回復 1# msmplay


   
未命名.GIF
2016-12-15 08:21

2003 可用圖示 前10 項 錄製你所需的看看
  1. Operator     選擇性的 XlAutoFilterOperator 資料類型。

  2. XlAutoFilterOperator 可以是這些 XlAutoFilterOperator 常數之一。
  3. xlAnd default
  4. xlBottom10Items           '後面(項目)
  5. xlBottom10Percent         '後面(百分比)
  6. xlOr
  7. xlTop10Items                '前面(項目)   
  8. xlTop10Percent             '前面(百分比)
  9. 可使用 xlAnd 和 xlOr 將 Criteria1 和 Criteria2 建構複合準則。
複製代碼
試試看
  1. Sub 篩選測試()
  2.     With Sheets("工作完成率統計")
  3.         If .FilterMode Then
  4.             .ShowAllData
  5.         Else
  6.             .Range("$B$3:$DB$222").AutoFilter
  7.         End If
  8.         .Range("$B$3:$DB$222").AutoFilter Field:=102, Criteria1:="5", Operator:=xlTop10Items
  9.         '測試前5項紀錄但會差一項,因  資料的最後是工作數總計列也計算進去了
  10.         ' 所以 Criteria1:="6" ,才會顯示測試前5項紀錄
  11.         .ShowAllData
  12.         .Range("$B$3:$DB$222").AutoFilter Field:=103, Criteria1:="5", Operator:=xlTop10Items
  13.         .ShowAllData
  14.         .Range("$B$3:$DB$222").AutoFilter Field:=104, Criteria1:="<90%"
  15.         ' 工作數總計列也有計算進去但 >90%,會顯示
  16.        .AutoFilterMode = False
  17.     End With
  18. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 3# msmplay

將你3個按鈕的程式放在一起了,你可拆開成你要的3個巨集,
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# msmplay
193列時際上是9.5,因你格式上採用數值小數點0位,所以顯示為10
可修改公式=IF(SUM(G193:CX193)=0,"-",ROUND(AVERAGE(G193:CX193),0))
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2016-12-18 08:11 編輯

回復 11# msmplay


  
未命名.JPG
2016-12-18 08:09
  1. Option Explicit
  2. Sub Ex_作業天數()
  3.     Ex_篩選 "作業天數", 10, 3   'xlTop10Items=3 請看圖示  
  4. End Sub
  5. Sub Ex_完成率()
  6.     Ex_篩選 "完成率", "<0.9", 0
  7. End Sub
  8. Sub Ex_逾期數()
  9.     Ex_篩選 "逾期數", 10, 3
  10. End Sub
  11. Sub Ex_篩選(篩選 As String, 篩選準則 As String, xl_Operator As Integer)
  12.     Dim Rng As Range
  13.     With Sheets("工作完成率統計")
  14.         Set Rng = .Rows("1:3").Find(篩選, lookat:=xlWhole)
  15.         If Rng Is Nothing Then MsgBox "找不到  " & 篩選: Exit Sub
  16.         Set Rng = Range(Rng.Range("A3"), Rng.Range("A4").End(xlDown).Offset(-1))
  17.         If .FilterMode Or .AutoFilterMode Then .AutoFilterMode = False   ' 取消 [自動篩選]
  18.         If xl_Operator > 0 Then
  19.             Rng.AutoFilter Field:=1, Criteria1:=篩選準則, Operator:=xl_Operator ', VisibleDropDown:=False
  20.         Else
  21.             Rng.AutoFilter Field:=1, Criteria1:=篩選準則 ', VisibleDropDown:=False
  22.         End If
  23.         '**  VisibleDropDown:=False :不在工作表上顯示有 [自動篩選] 下拉箭號
  24.         Rng(1).Select
  25.     End With
  26. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題