• 3

各位好,想請問關於Excel篩選功能配合VBA使用,有沒有辦法達成「跳到下一個項目」

各位好,想請問關於Excel篩選功能配合VBA使用,有沒有辦法達成「跳到下一個項目」這種功能

比如說,一個人每天要負責十到二十種工作
但是每天是誰每天幾項不一定
每次做完工作的人會把資料上傳
之後就變成以名字下去篩出所做過的工作內容
如:

A:買菜:芥藍、清江、杏菜
A:買米:糯米、小米、紫米
A:買衣服:圍裙、工作服、工作褲
A:洗米:十斤桶、三斤桶、八斤桶
A:洗菜:紅籃、綠籃、藍籃、白藍
A:洗衣服:-----------------
A:掃地:-----------------
A:拖地:-----------------
A:擦桌子:-----------------
A:帶小孩:-----------------
B:下略:-----------------

當我要記錄每個人每天做了什麼的時候,我需再篩選時當然是以人名篩選,但每天都有50個人要不斷切換的情況下,我雖然是用了VBA可以將所有資料都先整理好沒錯,但是一個一個人當作條件的情況下似乎沒辦法簡單一點切換下一項(人)

在每天都不一定是同一個人做事情的情況下,有時候50人中只有35人有做事要登記,但每天的35~45人都不一樣,依此只能一個一個項目從篩選中勾選挑出來

我想問,Excel在開啟篩選之後,有沒有辦法利用VBA,每次執行都跳到「下一項」(下一個人),因為每天會有的項目(人)都不同,不知道是否有方法可以快速的切換到【篩選項中的下一個】

如篩選出A,將資料全部複製整理好之後,換B,我有沒有簡單的方法可以不用手動【打開篩選項目】>【取消勾選A】>【選取B】這樣一個一個非常機械沉悶且浪費時間的手動切換下去……

我曾經想過將人名編號,然後利用篩選號碼的方式切換下一個,但變成無法配合我需要整理資料複製貼上等……而且人名的流動變化速度實在太快了,無法隨意為了配合表格給予編號……

各位好,想請問關於Excel篩選功能配合VBA使用,有沒有辦法達成「跳到下一個項目」

請問有沒有辦法,或是有人知道可以怎麼樣把VBA做成快速鍵,快速的切換【篩選中的下一個】這樣的功能

盼請不吝指教

萬分感激
2020-08-25 0:17 發佈
https://www.mobile01.com/topicdetail.php?f=511&t=5056987&p=1#63233105
snare wrote:
https://www.mobile01.com/topicdetail.php?f=511&t=5056987&p=1#63233105


萬分感謝
我會研究看看的

再次感謝你
方便的話,提供一下你的檔案(初始資料、最終結果)範例來看看?如果時間允許的話,可以幫你完成?

另外,你的Excel版本是?
Der,misser1
misser wrote: 方便的話,提供一下你的檔案(初始資料、最終結果)範例來看看?如果時間允許的話,可以幫你完成?

另外,你的Excel版本是?


檔案發在私人訊息裡面,用GoogleDrive上船的

以此為例,我依照「名字」進行篩選,把它一項一項篩選出來,分別貼到「對應名字」的檔案裏面,然後再分別把檔案傳給每個人,讓他們知道自己做的內容

因為原本數量眾多,每天平均大概有30~50不一定的名字要一個一個篩選,所以才希望有「篩選項的下一個」這種快速件之類的功能

不過能夠一個一個變成頁籤讓我用Ctrl+PageDown來切換已經方便了很多,非常感謝Misser大

至於EXCEL版本,我用2013、2016、2019都有,是工作地的電腦
稻草人到處草人 wrote:
......以此為例,我依照「名字」進行篩選....


剛看了一下訊息,下載的檔案,發現和您一開始貼的(每人做的工作)內容幾乎完全不同?(當然,或許您只是想解決篩選勾選問題......我只是「擔心」您誤丟了其他檔案,呵)

其實我比較好奇的是,您在下拉篩選,勾選要的人員後,後續是把資料如何處理?........「分別貼到「對應名字」的檔案裏面」是指另開新檔,把該人員資料貼過去,存檔關閉;然後再篩選另一位,開新檔,把資料貼到新檔,存檔關閉;再下一位.......以此類推?

您「確實」想要的,是A:「得到篩選下一位的巨集功能按鈕」,還是進一步B:「完成自動篩選貼到新檔」.......?

如果您只是想要:A:自動篩選下一位按鈕........也OK,但我推薦的會是:B:您在Excel名單上(收集到所有人資料),執行一個按鈕程式,Excel VBA就直接幫您把所有人的資料分開存檔完成(根本不用經過人工切換篩選、複製貼上)..........您只要按個按鈕,泡杯咖啡,坐著享受,工作就全部自動完成。(每個人的檔案就產生完畢。)

基本上,B的「結果」,才是您使用VBA的優勢~~(當然,真正的「高手」,應該會做到:連電子郵件都由Excel自動發送完畢.......呵,不過這還牽涉到收集Email,開port做網路傳送.......在此就先不討論)。

~~~希望您思考一下,是要A就好,還是B?(我個人真心推薦B)~~您做個「決定」,我再來看看是否抽空試看看.......

等您回覆囉
Der,misser1
呃,怕後續萬一時間不夠,看來我直接幫您先把A需求解決?

解決的方法和結果,我想還是丟到版上來,大家也可以一起研究和討論(畢竟這不是私人接case,呵),或許別人也可能藉此有所觸發,能夠受益的人越多越好。

不過不知您寄過來的檔案內容是否有機密(我看應該沒有),是否適合截圖或是錄成影片放上來?(我也有私訊您).....
Der,misser1
尚未收到您的回覆~~

那就先不考慮B了,我還是先將A的功能完成了,以下是程式碼:(至於畫面過程,就之後再補上....若裡面無機密資料的話....)


'程式 by misser 109.9.2
Sub auto_next() '自動篩選下一位

err_f = 0 ' 執行錯誤判斷旗標

On Error GoTo err_hand '以下程式執行若發生錯誤,就跳到 errhand:位置 (最底下)

r_f = ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlVisible).Rows(1).Row
'取得目前篩選得到的第一筆資料真實列數(若目前未執行篩選,會發生錯誤,程式跳到 errhand:)

If err_f = 1 Then r_f = 2 Else r_f = r_f + 1
'如果上一步驟發生錯誤,就從第2列開始檢查
'如果沒錯,就從目前篩選的列數,往下一列,準備檢查

Do
If Cells(r_f, 2) = "" Then
Range("L1") = "" '已經沒有需要勾選的人員
MsgBox "已勾選結束囉!"
Exit Do '跳出迴圈
ElseIf Excel.Application.WorksheetFunction.CountIf(Range("B2:" & "B" & r_f), "=" & Cells(r_f, 2)) = 1 Then
'檢查該列的姓名,若是第一次出現(由2~目前列),就執行篩選該人員

ActiveSheet.Range("A:I").AutoFilter Field:=2, Criteria1:=Cells(r_f, 2) '在篩選中勾選這位

ActiveSheet.AutoFilter.Range.SpecialCells(12).Copy '將篩選結果放到剪貼簿,方便使用者下一步處理

'Exit Sub
Exit Do '跳出迴圈
End If
r_f = r_f + 1
Loop

Exit Sub '離開本程序

err_hand: '錯誤(無篩選狀態)處理
err_f = 1 '將錯誤旗標設為1
Resume Next '程式回到錯誤點的下一步繼續執行
End Sub


達成目標:
1.點一次按鈕(請先將按鈕的巨集指定到上面的程式碼模組),電腦會自動將「自動篩選」切換到下一位並篩選之。
2.若尚未進入自動篩選狀態,則會自動從第2列名字開始勾選(篩選)。
3.篩選完後,會自動將內容複製到剪貼簿中(方便使用者作業,減少後續動作流程)。
4.程式碼盡量加上註解,方便您思考。

以上,您的問題應該有回答到囉
Der,misser1
misser wrote:
我還是先將A的功能完成了,以下是程式碼


抱歉,上述的程式碼裡,
「Range("L1") = "" '已經沒有需要勾選的人員」
這句是多餘的,可以刪除。

(我本來是在L1註記,前一次按按鈕時是檢查到哪一筆,下次按就去L1看看,好知道從哪一筆後開始檢查....後來我想到,或許操作者中途有做手動篩選,那乾脆跳過L2註記這一步。所以改成:當使用者按下按鈕時,直接判斷目前畫面是否是篩選中,是的話就查一下現在篩選的第一筆紀錄是第幾列,程式自動從下一列開始檢查該換誰....所以L2就用不到了~~嗯)
Der,misser1
misser wrote:
抱歉,上述的程式碼裡(恕刪)

天啊,Misser大真是太感謝您了@@
你這速度也太威猛
其實我的目標確實是做到AB兩個功能都可以實現
不過對我來說目前A確實是比較要緊的
B功能我原本還打算慢慢研究學習的
A功能則是因為找不到切換到下一個篩選選項的快速辦法所以才想先解決
至於那個檔案,因為這個檔案比較不需要擔心他人個資的問題,但要做的事情幾乎是一模一樣的
所以我才上傳這個檔案作為我常做事情的說明
我晚點有空會測試M大寫出來的VBA的
萬分感謝!!!
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?