Excel VBA 實例(22) - 一鍵篩選其他工作表或工作簿的數據

2021-02-14 永恆君的百寶箱

今天說的這個vba實例還是和學校有關。

需求

情況是這樣的,這裡有一張學校所有班級的總成績表,簡化如下圖:

能否實現一鍵把各個班級的成績篩選出來,顯示在「班級成績表」當中,如下圖:

也就是實現這樣的效果,點擊「3班」,就出現3班所有同學的成績:

這樣的話,各個班級的老師只需要滑鼠一點就可以查看到自己班級的成績,並且完全不會對原數據產生損壞。

大體思路

1、設計一個下拉菜單,裡面含有所有的班級名。
2、編寫vba事件,一旦班級名發生變化,則進行篩選。
3、編寫篩選vba代碼。

具體步驟

1、設計下拉菜單。這個比較簡單,選中要設計下拉菜單的單元格,數據 - 數據驗證,彈出的窗口選擇序列,來源把所有班級都加入(注意:班級直接用逗號隔開,要用英文輸入法下的逗號),如下圖:

2、編寫vba事件。這個需要選擇worksheet的change事件,如下圖:

下拉菜單改變的是B3單元格,一旦檢測到B3單元格的內容發生變化,則做出篩選相應班級的成績的動作,也就是下面的"call 班級"代碼(調用班級函數)。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$3" Then
        Call 班級
    End If
End Sub

3、編寫篩選vba代碼,即上面"call 班級"代碼中的「班級」函數,如下:

Public Sub 班級()
    Sheets("班級成績").Select
    
    Range("A6:C15").ClearContents
    
    k = 6
    
    For i = 2 To 10
        If Sheets("總成績").Cells(i, "A") = Range("B3") Then            
            Cells(k, "A") = Sheets("總成績").Cells(i, "B")
            Cells(k, "B") = Sheets("總成績").Cells(i, "C")
            Cells(k, "C") = Sheets("總成績").Cells(i, "D")
            k = k + 1
        End If
    Next
End Sub

新建模塊,將代碼保存進去即可。

大功告成!

另外,這個實例所有數據在同一個worksheet中,其實如果數據在不同的worksheet當中也基本是一樣的操作,只是代碼部分需要加上數據所在的worksheet即可。

如果你在操作過程中有疑問,歡迎來交流。源文件準備好,需要的話再後臺回復「一鍵篩選」即可。

如果你覺得文章還不錯,請大家點個好看、分享一下。你的肯定是我最大的鼓勵和支持。

微信公眾號:永恆君的百寶箱
個人博客:www.yhjbox.com

隨心隨喜

相關焦點

  • 收藏 | 37個Excel vba實例匯總(附贈VBA教程)
    實例(13)- 自動生成序號、一鍵排版(列寬、行高自適應等)實例(29)- 快速實現合併單元格的填充工作表(簿)操作實例(2)- 批量將工作表拆分為單獨文件實例(3)- 多個工作簿批量合併實例(4)- 根據已有名稱,批量新建表格實例(7)- 一鍵批量列印工作簿實例(30)- 為多個sheets創建目錄和超連結數據匯總實例(6
  • 收藏 | 27個Excel vba實例匯總(附贈VBA教程)
    實例(13)- 自動生成序號、一鍵排版(列寬、行高自適應等)工作表(簿)操作實例(2)- 批量將工作表拆分為單獨文件實例(3)- 多個工作簿批量合併實例(4)- 根據已有名稱,批量新建表格實例(7)- 一鍵批量列印工作簿數據匯總實例(6)- 一鍵匯總多個sheet數據到總表實例(19) –  一鍵匯總不完全相同的sheet到總表
  • 41個Excel VBA實例匯總(附贈教程)
    實例(13)- 自動生成序號、一鍵排版(列寬、行高自適應等)實例(29)- 快速實現合併單元格的填充工作表(簿)操作實例(2)- 批量將工作表拆分為單獨文件實例(3)- 多個工作簿批量合併實例(4)- 根據已有名稱,批量新建表格實例(7)- 一鍵批量列印工作簿實例(30)- 為多個sheets創建目錄和超連結數據匯總實例(6
  • Excel vba 實例(6) - 一鍵匯總多個sheet數據到總表
    自然會想到,要將各個分表的數據匯總到同一張表裡處理。那麼今天的實例就是解決這個問題。>            If k = 1 Then            '如果是首個表格,則K為1,則把標題行一起複製到匯總表                rng.Copy                [a1].PasteSpecial Paste:=xlPasteValues            Else
  • 運用Excel-vba合併工作表數據
    如下圖,工作簿中共有以下幾個工作表,現希望將各張工作表中的數據合併在一起。1.打開vba編輯器:右鍵單擊任意工作表,選擇「查看代碼」。ws.Name = "匯總" '新建工作表命名為匯總For Each sh In Sheets: '遍歷所有工作表If sh.Name <> "匯總" Then '判斷工作表是否為匯總表i = ws.Range("A" &
  • 快如閃電,excel一鍵合併工作簿【Excel教程】
    今天就跟大家介紹下使用Power Query合併工作簿,這樣工作簿裡不管是工作表變動還是數據變動都能一鍵刷新匯總了。趕快來學習吧!上次的教程沒有學習的小夥伴先學習之前的喲,點擊可查看:《excel一鍵生成報表,快到沒朋友!》
  • excel批量拆分工作簿,用VBA一鍵拆分,把數據分解到N個工作簿
    在各行各業的日常工作中,經常需要把一份工作表的內容歸類拆分到N個工作簿,最基礎的辦法就是通過篩選、排序歸類數據,然後複製原數據,再新建工作簿,粘貼數據,如此往復......如果數量較小,這樣操作沒問題,如果分類的數據非常多,要新建幾百,幾千個工作簿,那就是一個非常大的工作量了。
  • Excel表格把數據按類別快速拆分到不同工作表或工作簿
    Excel表格複製多個工作簿的數據到一個工作表有時並不是所有的數據都能共享,這時就需要把數據按類別拆分到不同的工作表或者工作簿裡實例要求:下圖是某水果超市的進貨需求表。我們需要按產品的名稱匯總出各個品種水果的需求量,而且要把不同的數據放在不同的工作簿裡發給不同的採購人員。
  • Excel VBA:匯總多個工作簿每個工作表名稱包含指定關鍵詞的數據
    今天再分享下匯總指定文件夾下每個工作簿中工作表名稱包含某個指定關鍵詞的小代碼(當不指定關鍵詞時,則默認匯總所有工作表數據)。舉個慄子。假設有一文件夾,內有十幾個工作簿,每個工作簿又各有多個不等數量的工作表,現在我們只想匯總每個工作簿中工作表名稱包含「看見星光」的數據,那就可以使用我們今天分享的小代碼了。如果是想把所有工作表的數據一股腦全部匯總呢?
  • Excel中按照條件拆分工作表,數據透視表就能實現
    有時候我們在excel中將所有數據放在同一張工作表,但由於工作需要又不得不將他們拆分到不同的工作表中,如果數量較少的時候可以使用函數公式或者篩選的辦法,但是數據量較大又不會vba怎麼辦?第一步:添加輔助列在A2中輸入公式=B2&COUNTIF($B$2:B2,B2),就是統計班級出現的次數第二步:提取不重複值即班級需要準備將所有班級名稱提取出來,放在不同的工作表中
  • Excel vba工作表事件【實現快速自動隱藏工作表】
    後來編寫了如下代碼,其中我把字符「X」優化了一下,利用數據有效性,每個工作表名稱後面為隱藏和不隱藏兩個選擇:就可以實現,隱藏哪一個工作表,選中哪一個工作表後面的狀態後,工作表自動隱藏或者不隱藏。>    NextEnd Sub當然,工作表事件還有很多方面的應用實例
  • Excel技術 | 名稱12:名稱在VBA代碼中的應用示例—篩選數據
    5:查找並顯示部分匹配的數據》一文中,充分展示了如何使用名稱來高效篩選數據。 示例工作簿與程序代碼如下圖1和圖2所示,工作簿包含兩個工作表,一個工作表Data用作資料庫,包含大量的數據;另一個工作表Search用來從資料庫工作表Data中查找想要的數據並顯示。
  • Excel用VBA代碼一鍵合併匯總多個工作簿,省時省力必學!
    有時候,你需要將幾十個工作簿中的內容,快速匯總至合併至一個工作簿,如果手動一個複製粘貼,那心裡有苦說不出。。。今天將大家用VBA一鍵合併,只需要幾秒種,為了測試這段代碼,我們新建了4個工作簿在文件夾中,數據都是模擬的,做試驗一鍵合併代碼操作如下所示:我們看原始表格數據,其中,第1個工作簿有點特殊,這個工作簿中,
  • 從多Excel文件多工作簿中動態提取出不重複值,一鍵更新結果
    除了本文內容,還想全面、系統、快速提升Excel技能,少走彎路的同學,請搜索微信公眾號「LiRuiExcel」點擊底部菜單,或下方二維碼進知識店鋪。更多不同內容、不同方向的Excel視頻課程長按識別二維碼↓獲取
  • excel數據處理:快速提取多工作簿數據
    本文分享excel多個工作簿查詢數據提取匯總方法,使用到Power Query插件來完成Excel不同工作簿數據匯總.各個地區的銷售數據需要匯總,儘管工作簿模板一致,但是全國那麼多城市,工作簿也要逐一打開複製粘貼數據。工作簿容量有的大有的小,一個個打開要花費大量的時間。那有沒有什麼好方法可以不用打開工作簿直接提取數據呢?今天給大家介紹了兩種方法來實現。如圖,在桌面這個文件夾中舉例說明了五個城市的12個月的銷售數據。
  • Excel VBA從新手到高手系列課程
    教學由易到難,循序漸進,結合工作實例,易學易用。五、 教學目錄:第一章 新手篇-走進excel vba的世界      1.1 什麼是VBA      1.2 EXCEL中的宏      1.3 認識VISUAL BASIC編輯器        1.4 vba程序結構      1.5 數據類型         1.6
  • Excel拆分工作表,工作表拆分到工作簿,想怎麼拆就怎麼拆!
    工作中,我們經常遇到這樣的問題,比如:如何將一個工作表按類別快速拆分成多個工作表?如何將一個工作簿的多個工作表快速拆分另存為多個工作簿?下面就用案例來說明如何解決這兩個問題。具體方法:【插入】→【數據透視表】→在數據透視表欄位中將部門拖選到篩選區域,勾選(或拖選)其他欄位到行(Excel2016在勾選日期欄位時會自動添加【年】和【季度】欄位,如果不需要,您可以將前面的√取消選擇)。2、調整數據透視表格式。
  • 一鍵取消所有excel工作表隱藏的快捷鍵,原來是它!
    圖文/蘭色幻想(來自Excel精英培訓微信平臺)在excel中隱藏工作表比較方便,選取多個工作表後右鍵菜單點隱藏即可
  • 測測你的VBA水平,多條件篩選數據並輸出到工作簿!
    下面是一位群友付費請教的問題(感謝願為知識付費的同學),這裡分享給大家:要求:根據A列和C列的類別篩選數據並輸出到新的工作簿,工作簿的名字最好能辨識工作簿裡的數據是什麼。比如,A列中菜市場1,對應的C列有屬於菜市場1的花生,那就篩選花生的數據輸出到新表,名字可以命名為菜市場1+花生,這樣通過工作簿的名字就能知道裡面是什麼數據,菜市場1還對應有蘿蔔的數據,也要輸出的到一個新的工作簿中,命名為菜市場1+蘿蔔,其它菜市場的數據篩選同上。
  • 拆分工作簿增強(按任意列拆分)
    >昨天分享的拆分工作簿代碼得到了大家的認可和贊同。後臺也有小夥伴留言問怎麼實現按其他任意列拆分工作簿。其實這很簡單,只需要稍微修改其他變量即可。nbsp;    arr = WorksheetFunction.Transpose(.Range(cln & 1 & ":" & cln & rrow))        For i = 2 To UBound(arr)  '將A列已有數據寫入字典