返回列表 上一主題 發帖

[發問] vba的篩選功能 (取消部分篩選)

[發問] vba的篩選功能 (取消部分篩選)

如何取消部分已被篩選的選項
篩選總共分成前後區段,分別是1~49 & 51~99,50的位置是中間分格
需求是在不影響51~99被篩選的部分,將1~49全部改為"全部"就是原始未篩選的狀態,反之亦然。

sub 篩選前端  ()
Dim var_min, var_max,i, j, s As Integer
var_min = 1  '前半段起
var_max = 49 '前半段迄
For i = var_min To var_max
i = i + 1
Selection.AutoFilter Field:=i
Next i
End Sub

sub 篩選後端  ()
Dim var_min, var_max,i, j, s As Integer
var_min = 51  '後半段起
var_max = 99  '後半段迄
For i = var_min To var_max
i = i + 1
Selection.AutoFilter Field:=i
Next i
End Sub
由錄製可以得到,一般的篩選指令是
Selection.AutoFilter Field:=5, Criteria1:="W" '將第5欄篩選為W
但是選擇取消該欄位的篩選,選擇全部則只會是
Selection.AutoFilter Field:=i
'從錄製看起來沒有給後面這串指定值就是全部了
'將該格篩選為"全部"


所以有了上面的程式碼,但看起來是沒有效果的。
想請問取消篩選的指令是? (Criteria1:= ?)
還有如果不用迴圈有直接選取範圍的方法嗎?
或是只能用迴圈,有用文字而非欄位數的方法?
像目前1~49其實是A~AX,51~99其實是AY~CU
可以直接指定文字下去迴圈嗎?
畢竟直接看到的是文字,比再去換算數字直觀。

同一頁內要顯示兩板塊篩選, 要用ListObjects, 樓主最好將模擬效果附件上載上來。

TOP

本帖最後由 wei9133 於 2020-10-6 20:28 編輯

回復 2# ikboy

如附件
    對戰統計 - 複製 - 複製.rar (35.99 KB)

還有,忘了講,版本是 excel2003
麻煩了!
我是沒看懂你說的,我是想不動已被篩選的部分(指定範圍)
將另外剩下的被篩選部分全部重置為全部狀態(未被篩選過的狀態)

TOP

沒看到你要求的效果, 請手動模擬上來。

TOP

本帖最後由 wei9133 於 2020-10-7 00:13 編輯

回復 4# ikboy
Microsoft_Excel_-_TEST.xls-2020-10-06-23-57-45.png
附件右半邊已篩選,想在不動到右半邊已篩選的條件
將左半邊被篩選的條件重置為全部
TEST.rar (32.89 KB)


A 已篩選 V
B 已篩選 W
F 已篩選 空格
W 已篩選 W
X 已篩選 空格

反方向亦然 (左半選取狀況下,右半邊全部重置為原始未篩選狀態)

;===============================================


上面這個AY~CU要篩選的已經確定了
就是要把A~AW的全部重置為未篩選狀態

TOP

在同一頁及相同行將A-AW列, AY-CU列視為兩個不同板塊作篩選處理是不行的, 簡單的舉例: A2篩選後是顯示資料,AY2篩選後是不顯示資料, 那第2行到底要顯示或隱藏!!
折衷辦法分頁, 並排。附件我手動做的, 看看這思路行不。

zz.zip (74.09 KB)

TOP

回復 6# ikboy
請問你的意思是 篩選後的結果再篩選一次或著更多次嗎?

TOP

回復  ikboy
請問你的意思是 篩選後的結果再篩選一次或著更多次嗎?
軒云熊 發表於 2020-10-7 12:28



    請看樓主在5#回覆, 由其是A~AW 與AY~CU那段,你會明白了。

TOP

本帖最後由 軒云熊 於 2020-10-7 14:15 編輯

回復 1# wei9133

並排顯示嗎?
  1. Sub 垂直並排顯示加篩選()
  2.     Application.ScreenUpdating = False
  3.     ActiveWindow.NewWindow '開啟多個相同工作簿
  4.     Windows.Arrange ArrangeStyle:=xlVertical '垂直並排顯示
  5.    
  6.     Windows("zz.xls:1").Activate '切換到工作表2
  7.     Sheets(2).Cells(51, 1).AutoFilter '篩選工作表2
  8.     Sheets(2).Select '點選工作表2

  9.     Windows("zz.xls:2").Activate '切換到工作表1
  10.     Sheets(1).Cells(1, 1).AutoFilter '篩選工作表1
  11.     Application.ScreenUpdating = True
  12. End Sub
複製代碼

TOP

回復 9# 軒云熊
你好,我沒有測試你的巨集
不過看就知道不對,因為東西是在同一個活頁簿裡
只是分成前面跟後面而已
詳細可以看看上面的附件
應該這樣講
假設有A~Z欄 (實際上更多)
把A~L全部篩選好了
要把M~Z的篩選條件全部清空為預設
大概就只是這樣而已

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題