四月初,《VBA代碼解決方案》開始結集推出,現在共推出了第一冊和第二冊,雖然這份資料內容大多來自於我的這個平臺,但反響仍然十分強烈,有了結集後的資料,朋友們的查找更加方便了,寫代碼的效率也大大提高。到現在已經有幾百人分享了此資料。為了給大家的提供方便,我會就此資料的使用方法給予說明,同時也是寫VBA代碼的方法的分享。
很久之前,我無意間體會到VBA的功效,並開始致力於學習及應用,經過二十多年來的摸索,在總結很多經驗的基礎上,結合自身的工作,小有收穫。如何學習VBA,如何利用VBA一直在有朋友詢問這個問題,我將陸續和大家分享我的經驗,和大家共同驗證一個道理:寫代碼並不難,成為代碼高手不不難。
這套《VBA代碼解決方案》系列資料中,我會以自己的經歷來告訴大家:如何去學習,如何掌握你想學習的這套知識體系。《VBA代碼解決方案》以實用為主,特別是廣大職場朋友,或多或少都可以從本書受益,甚至可以讓你的工作發生質的改變,我曾經幫助一位朋友將以前一天的工作不到五分鐘就完成了,這也正是VBA的魅力所在。
今天就帶大家利用這套教材完成一個簡單的程序製作:一個工作薄有三個工作表,分別為"數據1", "數據2", "數據3",其中每個工作表中以A列為基準,內部存在大量的重複數值,要判斷一下A列中哪些是重複的,重複的刪除掉。這在EXCEL中如果用手工操作將是十分困難的,而且非常容易出錯,跟緊我,讓VBA代碼來處理好了。
數據1的內容:
數據2的內容:
數據3的內容:
看到上面的內容很多的朋友會感到,自己的工作中就是有很多這樣的例子啊,就是工作表的排重啊。對了,就是的,這就是實用。
我們在做程序的時候,儘量不要去寫,要利用"積木化"的操作。為了實現上面的目的我們把整個過程分成如下的三步:就是要搭建三塊積木,這三塊積木分別實現三個步驟,
積木1實現步驟① :要遍歷上述的工作表
積木2實現步驟②:每個工作表要進行重複數據的刪除操作
積木3實現步驟③:結束運行後提示
我們先打開這個工作薄中VBE窗口模塊,一會兒我們放"積木":
"積木"也就是代碼,哪裡去找呢?這就是我們的教材了。首先打開《VBA代碼解決方案》的第一冊內容:
通過目錄,我們看到其中第18,第19講有專門的上述步驟①內容,好了我們任意選一個,作為我們的積木1.
我這裡選第18講,按下鍵聯,找到代碼並拷貝如下:
Sub MyShCount1()
Dim c,iAs Integer
Dim s As String
c = Worksheets.Count
For i = 1 To c
s = s & Worksheets(i).Name & Chr(13)
Next
MsgBox "工作簿中含有"& c &"個工作表,如下:" & Chr(13) & s
End Sub
注意,這時代碼還不是你的,還要在修正。
下面我們再看實現第二個步驟"每個工作表要進行重複數據的刪除操作"用哪一講的內容呢?如下圖:我們選取第24講作為我們的第二塊積木。
同樣拷貝代碼如下:
Sub MyDeleteRow()
Dim R As Integer
Dim i As Integer
With Sheets("sheet9")
R = .[A65536].End(xlUp).Row
For i = R To 1 Step -1
If WorksheetFunction.CountIf(.Columns(1), .Cells(i, 1)) > 1 Then
.Rows(i).Delete
End If
Next
End With
End Sub
代碼有了,我們下面修正代碼為我們所有;由於上述步驟②為每個工作表都要進行重複數據的刪除操作,是指步驟①中的循環內的動作,所以我們把步驟①中的代碼
s = s & Worksheets(i).Name & Chr(13)
改為步驟②的代碼,同時把一些變量修正,如下:
Sub MyShCount1()
Dim c, t As Integer '此處修正一個重複的變量i改為t
Dim s As String
Dim R As Integer
Dim i As Integer
'下面實現步驟①
c = Worksheets.Count
For t = 1 To c '變量設為t
'下面實現步驟②
With Worksheets(t) ' 將工作表的名稱修正
R = .[A65536].End(xlUp).Row
For i = R To 1 Step -1
If WorksheetFunction.CountIf(.Columns(1), .Cells(i, 1)) > 1 Then
.Rows(i).Delete
End If
Next
End With
Next
MsgBox "ok" '實現步驟③
End Sub
上述過程中第三塊積木過於簡接放單,不用再找了,直上就可以。最後形成我們的積木搭建,代碼就寫好了,複製到模塊中:
非常的簡單吧,下面看看我們的運行吧.
這時你再看上面的三個數據表,沒有重複了,整個運行時間不到1秒鐘。
再次重申一點,做程序就如同搭積木,儘可能不要去寫代碼,你把必要的積木塊拿來,組合好,你要做的只是組合、修正即可,就這麼簡單。
我的《VBA代碼解決方案》中會有各式各樣的獨立的積木,給你分享,給你利用。當然你要弄懂每講的內容才能運用自如,才能組合、修正代碼。