- Excel VBA范例大全
- 羅剛君編著
- 214字
- 2018-12-29 15:15:23
第2部分 單元格數據處理技巧
Excel制表中運用最多的莫過于數據處理。前一部分學習了一些單元格及區域之選擇技巧,本部分將對選擇后之區域數據從最基本的轉換和標示,再到復雜的運算、查找、替換等諸多方面進行實例講解。用戶可以從中掌握到數據處理的技巧和一些常用語法。
本部分主要知識點:
● 選區數字、文本及字母轉換
● 修改選區格式
● 修改選區數據
● 控制選區的不重復值
● 鏈接功能的使用
● 批注功能的使用
● 合并單元格相關操作
● 數據查詢與替換
● 處理名稱
● 其他應用
第4章 選區數據轉換
在制表過程中,有時需要對文本、數值、字母等元素進行轉換,本章通過5個實例展示數據轉換中的技巧。同時還將運用到手動轉換和自動轉換,讀者可從中了解到不同需求下將宏程序存于不同的事件中,從而實現手動運行與自動運行。
● 實例28將選區公式轉換成數值
● 實例29將當前區域公式轉換成數值
● 實例30將數字轉換為文本
● 實例31自動將小寫轉換為大寫
● 實例32將英文轉換為首字母大寫
實例28 將選區公式轉換成數值
【技巧說明】 將選擇區域的公式一次性轉換成固定數值,使之不隨引用數據變化而變化。
【案例介紹】 如圖2.1所示,工作表引用了其他工作表的數據進行運算,當其他表的數據改變時將跟隨變化,若其他表被刪除,則本工作表的公式結果將會出錯。現需將該表公式引用轉換成固定數值。

圖2.1 引用其他工作表數據之工作表
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub公式轉為值() Dim Rng As Range '聲明變量 Set Rng=Application.InputBox("請選取公式單元格區域", "轉換為數值", "a1", Type:=8) '選擇區域 If Rng Is Nothing Then Exit Sub '若點擊取消則退出程序 Rng=Rng.Value '公式轉為值 End Sub
[4] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕。
[5] 運行程序時將彈出選擇區域的窗口,此時可以手工輸入待轉換的區域,也可以用鼠標選擇區域,如圖2.2所示。

圖2.2 選擇區域窗口
[6] 單擊“確定”按鈕,程序將所選擇區域之公式全部轉換成數值。可以從編輯欄觀察到,公式已變為固定值,如圖2.3所示。

圖2.3 轉換后的工作表
提示
本實例參見光盤樣本:..\第2部分\實例28.xlsm。
【相關知識說明】
(1)Application.InputBox函數:本例在輸入單元格地址時可以用InputBox函數實現需求,也可以使用Application.InputBox函數。但InputBox只允許手工輸入字符,且不帶參數校驗功能,即輸入“ABC”等不規范的區域引用時不給予提示。本例引用區域時為了使用方便,利用Application.InputBox函數的Type參數為8,不僅可以使用鼠標選擇區域,還可以通過參數校驗功能確保返回值是有效的單元格引用。Application.InputBox的Type參數返回值見表2.1。
(2)Exit Sub:此語句一般用于中途結束程序。在本例中的作用是:如果在選擇區域框中單擊了“取消”按鈕,則退出程序,如果不用“Exit Sub”,程序將中途彈出錯誤提示。本語句也可以用另一種方式跳出程序的運行——GoTo,即程序改為以下方式將取得同樣的效果:
Sub公式轉為值二() Dim Rng As Range '聲明變量 Set Rng=Application.InputBox("請選取公式單元格區域", "轉換為數值", "a1", Type:=8) '選擇區域 If Rng Is Nothing Then GoTo endd '若點擊取消則退出程序 Rng=Rng.Value '公式轉為值 endd: End Sub
表2.1 Application.InputBox的Type參數

提示
表2.1列出的Type參數中傳遞的值可以多個套用。例如,對于一個可接受文本和數字的輸入框,將Type設置為1+2;而返回邏輯值與數字則用1+4等。
實例29 將當前區域公式轉換成數值
【技巧說明】 將當前單元格所在區域的公式一次性轉換成固定數值,使之不隨引用數據變化而變化。
【案例介紹】 如圖2.4所示,“成績表”中學號欄引用了“學生學號表”之數據,此時僅僅需要將一班成績區域的公式轉換成值,二班維持不變。

圖2.4 引用其他工作表數據之工作表
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub公式轉為值() ActiveCell.CurrentRegion.Copy '復制 ActiveCell.CurrentRegion.PasteSpecial Paste:=xlPasteValues '粘貼數值 End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 用鼠標單擊一班成績區域的任意單元格,然后使用快捷鍵Alt+F8,運行本程序。確定后,程序將所選擇之公式全部轉換成數值,結果如圖2.5所示。

圖2.5 轉換后的工作表
提示
本實例參見光盤樣本:..\第2部分\實例29.xlsm。
【相關知識說明】
(1)ActiveCell是指當前活動單元格,也是光標所在單元格。如果同時選擇了一個區域,則ActiveCell是指選區左上角單元格。
(2)CurrentRegion表示當前已用區域,是以空行與空列的組合為邊界的區域。如本例中用鼠標點擊A1∶C14區域中任意單元格,ActiveCell.CurrentRegion都表示A1∶C14。
(3)PasteSpecial:將剪貼板中的Range對象粘貼到指定區域中。語法如下:
expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
其中,Paste參數表示選擇性粘貼的部分,其參數列表見表2.2。
表2.2 Paste參數列表

實例30 將數字轉換為文本
【技巧說明】 將指定區域中的數字格式轉換為文本格式。
【案例介紹】 輸入人事資料時,若員工身份證號超過15位數字,身份證號碼將被系統格式化為科學記數,如圖2.6所示。此時在單元格中無論如何修改數據都無法正確顯示出身份證號碼,解決辦法就是將區域格式化為文本。

圖2.6 顯示為科學記數的身份證號碼
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub數字轉為文本() Selection.NumberFormatLocal="@" End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 選擇B2∶B3,然后使用快捷鍵Alt+F8,運行本程序。確定后,程序將所選區域中的數字轉換成文本。若再輸入18位數字,則已可以正常顯示,如圖2.7所示。

圖2.7 轉換后的工作表
提示
本實例參見光盤樣本:..\第2部分\實例30.xlsm。
【相關知識說明】
NumberFormatLocal:表示單元格數字格式,@符號即表示文本格式。
實例31 自動將小寫轉換為大寫
【技巧說明】 自動將B列輸入的小寫字母轉換為大寫。
【案例介紹】 工作表中有多列數據,第一列需要輸入小寫字母,第二列必須是大寫字母,如圖2.8所示。輸入時頻繁開關大寫鎖定鍵顯然會降低輸入效率。本例代碼可將B列字母自動轉換為大寫。

圖2.8 產品編碼表
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE環境。
[2] 使用快捷鍵Ctrl+R,顯示工程資源管理器。
[3] 雙擊左邊列表中的“產品編碼表”,打開工作表代碼窗口。
[4] 在右邊代碼窗口輸入以下代碼:
Private Sub Worksheet_Change(ByVal Target As Range) If IsEmpty(Target) Then Exit Sub If Target.Cells.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub Application.EnableEvents=False Target.Value=UCase(Target.Value) Application.EnableEvents=True End Sub
[5] 關閉VBE窗口返回到工作表。
[6] 在A列輸入小寫字母將顯示為小寫狀態,在B列輸入小寫字母則自動轉換為大寫狀態。
提示
本實例參見光盤樣本:..\第2部分\實例31.xlsm。
【相關知識說明】
(1)Worksheet_Change:工作表事件的一種。本例中表示當修改工作表中B列某單元格數據時執行相應的程序。
(2)IsEmpty:返回Boolean值,指出變量是否已經初始化。本例中表示單元格為空時不執行后面的代碼。
(3)Exit Sub:表示退出程序。
(4)EnableEvents:指定是否啟用事件。本例中修改小寫字母為大寫前禁用事件,否則將進入死循環,在修改完成后恢復。
(5)UCase:將小寫字母轉換為大寫的函數。
實例32 將英文轉換為首字母大寫
【技巧說明】 將輸入的英文單詞或者人名轉換為首字母大寫。
【案例介紹】 在單元格中輸入英文單詞時,根據國外習慣,應首字母大寫。但輸入時不斷手工切換將影響輸入效率,利用本例代碼可自動轉換。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE環境。
[2] 使用快捷鍵Ctrl+R,顯示工程資源管理器。
[3] 雙擊左邊列表中的“產品編碼表”,打開工作表代碼窗口。
[4] 在右邊代碼窗口輸入以下代碼:
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Target=WorksheetFunction.Proper(Target.Text) End Sub
[5] 在任意單元格輸入單詞后,首字母轉換為大寫,其余字母則小寫。
提示
本實例參見光盤樣本:..\第2部分\實例31.xlsm
【相關知識說明】
Proper:將英文單詞首字母大寫、其余字母小寫的函數。因為是工作表函數,需要添加前綴“WorksheetFunction”。如果不用工作表函數,也可以用以下VBA方式實現:
Private Sub Worksheet_Change(ByVal Target As Range) Target=StrConv(Target, vbProperCase) End Sub
- Word/Excel/PowerPoint 2013三合一高效辦公超級手冊
- Word/Excel/PPT 2007入門與提高(超值版)
- Android網上班級管理實例:“我的班班”APP平臺建設
- 金蝶ERP-K/3培訓教程:財務/供應鏈/生產制造(第2版)
- Word/Excel/PPT三合一商務辦公應用從入門到精通
- Word/Excel/ PPT 2010入門與提高
- Excel 必修課:Excel表格制作與數據分析
- PPT制作應用大全
- Office辦公應用技巧
- Office 2021辦公應用實戰從入門到精通
- 隨身查: 一小時搞定你想要的PPT
- 掌中寶:Office辦公高手應用技巧
- 做好PPT就靠這幾招:圖解力 吸引力 說服力(全彩圖解版)
- Excel/PPT 2013辦公應用從入門到精通
- Excel 2010電子表格