徐軍泰
當然,一個問題有不同的解法,我在打卡里看到大家說用透視表,但是沒看到大家的截圖。
我是用VBA實現的,這是一個非常好的可以瞭解到底什麼是VBA的案例:
首先,為了製作這個案例,我需要根據總表中的姓名,快速新建8張工作表,並依次用名字去命名工作表。
我寫了如下代碼(ALT+11打開VBE,新建模塊,在模塊中編寫代碼):
Sub 批量新建工作表()
Dim i
For i = 1 To 8
Worksheets.Add after:=Sheets(Sheets.Count)
Sheets(i + 1).Name = Sheet1.Cells(i + 2, 2)
Next
End Sub
知識點說明:
1、 For……Next,VBA常用循環語句
2、Worksheet.Add,利用工作表的Add方法新建工作表,after指定在哪張表後面新建
3、Sheets.Count,計算當前總共有多少張表
4、Sheets(i + 1).Name = Sheet1.Cells(i + 2, 2),用B列的姓名依次給新的工作表命名
新建好工作表之後 ,用CTRL鍵全選8張分表,一次性在分表製作一個統計表,如下圖:
接下來,就是關鍵的提取工作了,同樣用代碼實現:
Sub 提取數據()
Dim rng As Range '定義一個單元格區域類型的變量rng
Set rng = Sheet1.Range("b3:b10") ‘讓rng代表B3:B10這個單元格區域
For Each cell In rng '在rng這個區域內逐個單元格進行循環操作
Worksheets(cell.Value).Cells(2, 3) = cell.Value '提取姓名到分表
Worksheets(cell.Value).Cells(3, 3) = cell.Offset(0, 1) '提取第工作量得分
Worksheets(cell.Value).Cells(4, 3) = cell.Offset(0, 2) '提取完成分
Worksheets(cell.Value).Cells(5, 3) = cell.Offset(0, 3) '提取貢獻分
Next cell
End Sub
為了方便大家理解每行代碼的含義,我在代碼後加了註釋。
編寫好代碼之後,我們可以直接在代碼上點F5運行,或者指定宏給按鈕,就可以一鍵完成提取了,效果如下:
案例總結:
這個案例中,我們只放了8張分表,實際工作中幾十張、幾百張表都有可能,這時候VBA的優勢就體現出來了。
很多星友可能對VBA還不瞭解,相比其它Excel功能,VBA確實學起來比較燒腦。初期,建議先從類似這樣的案例入手,做到能看懂大概的意思,知道如何改代碼就好了。
今年,表格學院計劃錄製一套VBA的入門課和實戰訓練營,屆時歡迎大家報名學習。
今天的案例,有看不懂的地方,歡迎打卡提問。
————————
每天上班第1件事,上表格星球打卡學Excel
365天,陪伴1天不少~
閱讀更多 跟徐軍泰學Excel 的文章