- Excel VBA范例大全
- 羅剛君編著
- 4029字
- 2018-12-29 15:15:33
第3部分 條件格式及數據突顯方式
Excel制表中有些數據會基于某些特殊原因需要突顯出來,加以區別。這種需求一般都通過條件格式滿足。但除了條件格式這種易操作且可即時預覽的方式外,也可以通過其他一些技巧完成。本部分就數據突顯需求而進行多元化探討,通過13個實例講解其中存在的一些技巧。
本部分主要知識點:
● 條件格式及其他數據突顯方式
● 管理條件格式規則
第14章 條件格式及其他數據突顯方式
Excel每一個版本都可以通過條件格式實現數據突顯,不過Excel 2007以前的版本中條件格式的條件上限是三個,在一定條件下限制了它的運用,難以滿足用戶在特殊狀況下的需求。Excel 2007中沒有上限,僅受內存限制。也就是說,只要系統內存足夠大,可以使用幾十、幾百個條件對數據進行管理。
● 實例105利用字體顏色突出顯示當前行
● 實例106利用特殊字體突顯男生成績
● 實例107灰色底紋顯示優異成績之成員
● 實例108對區域中最大值添加下劃線
● 實例109對區域中超過平均值之數據加粗傾斜
● 實例110用彩色條標示區域值的大小
● 實例111用三色交通燈圖標標示成績
● 實例112將重復值加上虛框
● 實例113圈釋目標
實例105 利用字體顏色突出顯示當前行
【技巧說明】 用黃色字體突出顯示當前光標所在行。
【案例介紹】 在進行多行多列的大型工作簿的數據輸入且當前單元格在屏幕右邊時,往往在視覺上難以對齊左側的行標題。對當前行加以明顯的字體顏色區別則有助于快速錄入數據。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub添加條件格式() Dim rng As Range Set rng=Rows("1:" & Range("a1").End(xlUp).Row) With rng .FormatConditions.Delete '如果已有條件格式,將之刪除 .FormatConditions.Add Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")" '添加公式 .FormatConditions(rng.FormatConditions.Count).SetFirstPriority '將此條件格式規則的優先級值設置為“1” With .FormatConditions(1).Font .ThemeColor=xlThemeColorAccent6 '指定要使用的主題顏色 .TintAndShade=0.1'條件格式規則單元格的填充顏色變淺或變深的設置參數 End With End With End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕。
[6] 在單元格I3中輸入數據100并按Enter鍵,可以看到當前單元格所在行的數據已全部以不同的顏色區別開來。

圖3.1 以不同顏色突顯當前行
提示
本實例參見光盤樣本:..\第3部分\實例105.xlsm。
【相關知識說明】
(1)FormatConditions:即條件格式,可以通過ADD方法對區域添加條件格式;使用Modify方法可更改現有的條件格式。
(2)SetFirstPriority:將當前條件的優先級提升為1,當然在區域中同時存在多個條件格式時使用。
(3)實現本例效果也可以不使用條件格式,可以用以下代碼,但如果用戶的工作表中本身已有多種顏色標示數據的話,它將消除黑色以外的顏色;否則效果等于實例中的代碼。
Private Sub Worksheet_Change(ByVal Target As Range) Cells.Font.ColorIndex=xlAutomatic Cells.Font.TintAndShade=0 With Target.EntireRow.Font .ThemeColor=xlThemeColorAccent6 .TintAndShade=-0.249977111117893 End With End Sub
實例106 利用特殊字體突顯男生成績
【技巧說明】 利用Arial Black字體顯示表中男生的成績。
【案例介紹】 學生成績表如圖3.2所示,現需要突出顯示男生成績。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 使用快捷鍵Ctrl+R,顯示工程資源管理器。
[3] 雙擊左邊列表中的“成績表”,打開工作表代碼窗口,并輸入以下代碼:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Application.ScreenUpdating=False ActiveSheet.UsedRange.Font.Name="宋體" For Each rng In Application.Intersect(Range("b:b"), ActiveSheet.UsedRange.Offset(2, 0)) If rng="男" Then rng.Resize(1, 5).Font.Name="Arial Black" End If Next Application.ScreenUpdating=True End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 將“田伯光”的性別改為“女”,已用區域中男生成績全部以Arial Black字體顯示,如圖3.3所示。再將“田伯光”性別改為“男”,則其成績也將以Arial Black字體顯示。

圖3.2 學生成績表

圖3.3 突顯男生成績
提示
本實例參見光盤樣本:..\第3部分\實例106.xlsm。
【相關知識說明】
鑒于不同字體將使字符進行相應的縮放,影響行高,Excel的條件格式不允許修改字符的字體,故本例未使用條件格式,但達到了條件格式的同等功能。
實例107 灰色底紋顯示優異成績之成員
【技巧說明】 將優異成績之學生姓名單元格顯示為灰色底紋。
【案例介紹】 學生成績表如圖3.4所示,現需要將成績為“優”的學生姓名以灰色底紋顯示。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 使用快捷鍵Ctrl+R,顯示工程資源管理器。
[3] 雙擊左邊列表中的“成績表”,打開工作表代碼窗口,并輸入以下代碼:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range For Each rng In Application.Intersect(Range("f:f"), ActiveSheet.UsedRange.Offset(2, 0)) If rng="優" Then With rng.Offset(0,-5).Interior .ThemeColor=xlThemeColorDark1 .TintAndShade=-0.149998474074526 .PatternTintAndShade=0 End With End If Next End Sub
[4] 在數據后面添加一行數據,輸入數據后,可以發現評語為“優”者姓名已加上灰色底紋,如圖3.5所示。

圖3.4 學生成績表

圖3.5 突顯評語為“優”的學生姓名
提示
本實例參見光盤樣本:..\第3部分\實例107.xlsm。
實例108 對區域中最大值添加下劃線
【技巧說明】 對成績表中最高成績者添加下劃線。
【案例介紹】 如圖3.6所示,現需要將成績表中最高成績者的姓名加上下劃線。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub添加條件格式() Cells.FormatConditions.Delete Dim rng As Range Set rng=Application.Intersect(Range("a:a"), ActiveSheet.UsedRange.Offset(2, 0), ActiveSheet.UsedRange) With rng .Select .FormatConditions.Add Type:=xlExpression, Formula1:=_ "=OFFSET(A3,,4)=MAX($E:$E)" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Font .Underline=xlUnderlineStyleSingle .TintAndShade=0 End With .FormatConditions(1).StopIfTrue=False End With End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,可以看到最高分者“田伯光”姓名下已添加下劃線,如圖3.7所示。
提示
本實例參見光盤樣本:..\第3部分\實例108.xlsm。

圖3.6 學生成績表

圖3.7 對最高分者加下劃線
【相關知識說明】
(1)=OFFSET(A3,,4)=MAX($E:$E):A列條件格式的公式,表示若當前單元格偏移4列的單元格等于E列最大值時,則實施條件格式中添加的條件。
(2)本例中添加條件格式的區域是A3∶A11,但為了使程序通用,在區域后面添加數據后本程序仍然不需要修改即可使用,故使用動態區域引用。Intersect(Range("a:a"), ActiveSheet.UsedRange.Offset(2, 0), ActiveSheet.UsedRange)表示A列前兩行以外的所有已用區域,此區域可以根據數據增減而變化。
實例109 對區域中超過平均值之數據加粗傾斜
【技巧說明】 對區域中超過平均值之數據加粗傾斜。
【案例介紹】 以實例108數據為例,現需要將成績表中超過平均成績的分數加粗傾斜顯示。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub對區域中超過平均值之數據加粗傾斜() Range("E3:E" & [e1048576].End(xlUp).Row).Select With Selection .FormatConditions.AddAboveAverage '添加條件格式 .FormatConditions(1).AboveBelow=xlAboveAverage '類型 With .FormatConditions(1).Font '字體加粗/傾斜 .Bold=True .Italic=True End With End With End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,可以看到高于平均分的分數都已經加粗傾斜顯示,如圖3.8所示。

圖3.8 高于平均分的分數加粗傾斜顯示
提示
本實例參見光盤樣本:..\第3部分\實例109.xlsm。
實例110 用彩色條標示區域值的大小
【技巧說明】 用彩色條標示區域值的大小。
【案例介紹】 以實例108數據為例,以彩色條標示平均分。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub添加圖標集條件格式() Range("E3:E" & [e1048576].End(xlUp).Row).Select With Selection .FormatConditions.AddDatabar '添加圖標集條件格式規則 .FormatConditions(.FormatConditions.Count).SetFirstPriority '設定優先級別 .FormatConditions(1).BarColor.ColorIndex=5 '指定顏色值 End With End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,可以看到E列數據已用彩色圖標顯示,如圖3.9所示。

圖3.9 彩色條標示的平均分
提示
本實例參見光盤樣本:..\第3部分\實例110.xlsm。
【相關知識說明】
AddDatabar:返回一個代表指定區域數據條件格式規則的Databar對象。
實例111 用三色交通燈圖標標示成績
【技巧說明】 用三色交通燈(綠色/黃色/紅色)圖標標示成績。
【案例介紹】 學生成績表如圖3.10所示。成績一般以小于60分為差,大于90分為優。本實例以三色中綠色對90分以上者表示褒獎,用黃色表示激勵,紅色表示警告。
【案例實現】 參見以下步驟:
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub圖標條件格式() Range("C3:C" & [C1048576].End(xlUp).Row).Select '對C列設置條件格式 With Selection .FormatConditions.Delete '刪除以前的條件格式 .FormatConditions.AddIconSetCondition '添加條件格式 .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1) .IconSet=ActiveWorkbook.IconSets(xl3TrafficLights1) '圖標樣式 End With With .FormatConditions(1).IconCriteria(2) .Type=xlConditionValuePercent '使用百分比 .Value=60 .Operator=7 '指定條件格式的操作符,位置7表示大于且等于 End With With .FormatConditions(1).IconCriteria(3) .Type=xlConditionValuePercent .Value=90 .Operator=7 End With End With End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,工作表中將產生數值及顏色,如圖3.11所示。

圖3.10 學生成績表

圖3.11 對成績添加三色交通燈圖標
提示
本實例參見光盤樣本:..\第3部分\實例111.xlsm。
【相關知識說明】
(1)ActiveWorkbook.IconSets:此屬性用于基于IconSet集合中的單元格圖標對工作簿中的數據進行篩選,可選項見表3.1。
表3.1 條件格式可用圖標集

(2)IconSetCondition.IconCriteria:返回一個IconCriteria集合,該集合代表圖標集條件格式規則的一組條件。本實例中使用xlConditionValuePercent類型,即百分比。其可選項目見表3.2。
表3.2 可使用的條件值類型列表

(3)Operator:代表條件格式的操作符,本例中值為7表示大于或等于。具體值與屬性名稱的對應關系見表3.3。
表3.3 具體值與屬性名稱的對應關系

實例112 將重復值加上虛框
【技巧說明】 將重復值加上虛框。
【案例實現】 參見以下步驟:
【案例介紹】 如圖3.12所示之學生成績表,現需對平均成績相同者加虛框顯示。
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub將重復值加上虛框() Range("E3:E" & [E1048576].End(xlUp).Row).Select With Selection .FormatConditions.AddUniqueValues .FormatConditions(1).DupeUnique=xlDuplicate .FormatConditions(1).Borders.LineStyle=xlDot End With End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,平均成績相同者都已將成績加虛框顯示,如圖3.13所示。

圖3.12 學生成績表

圖3.13 虛框顯示相同平均分
提示
本實例參見光盤樣本:..\第3部分\實例112.xlsm。
【相關知識說明】
(1)DupeUnique=xlDuplicate:表示對重復值添加條件格式。
(2)LineStyle:此處表示單元格邊框的線型,xlDot為虛線型。
實例113 圈釋目標
【技巧說明】 對姓“羅”的學生加上圓圈標示。
【案例實現】 參見以下步驟:
【案例介紹】 如圖3.14所示之學生成績表,現需突出顯示姓“羅”的學生。
[1] 使用快捷鍵Alt+F11進入VBE(Visual Basic Editor)環境。
[2] 單擊菜單【插入】\【模塊】,打開模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub查找羅并標示紅圈2() '效率更高 Dim Cell As Range For Each Cell In Range("A1:H50") If Cell Like "羅*" Then With Worksheets(1).Ovals.Add(Cell.Left,Cell.Top,Cell.Width,Cell.Height) .Interior.Pattern=xlNone .Border.ColorIndex=3 End With End If Next End Sub
[4] 關閉VBE窗口返回到工作表。
[5] 使用快捷鍵Alt+F8調出運行宏窗口,然后單擊“執行”按鈕,姓“羅”的學生姓名都已加紅圈顯示。如圖3.15所示。

圖3.14 學生成績表

圖3.15 對姓羅的學生加紅圈顯示
提示
本實例參見光盤樣本:..\第3部分\實例113.xlsm。
【相關知識說明】
(1)Ovals:表示橢圓圖形,可以用ADD方法生成新圖形。新增圖形時有4個參數,分別表示它的左邊距、上邊距及寬度、高度。
(2)刪除所生成的紅圈可以用前面介紹的方法刪除,也可以用快捷鍵F5調出定位功能,選擇對象,然后按“Delete”鍵一次全部刪除。
(3)本例方法是通過在單元格畫圈實現目的。還有另一種方法也可以實現,即使用數據有效性。為拓展思路,再給一解,利用數據有效性完成本例之效果:
Sub圈釋目標() '數據有效性方法 With Range("a3:A" & Range("A1048576").End(xlUp).Row).Validation .Delete '刪除數據有效性 .Add Type:=xlValidateCustom,AlertStyle:=xlValidAlertStop,Operator:=_ xlBetween, Formula1:="=left(A3,1)<>""羅""" '添加數據有效性 .IgnoreBlank=True '允許空值 .InCellDropdown=True '顯示含有有效取值的下拉列表 End With ActiveSheet.CircleInvalid '圈釋無效數據 End Sub
- Office 2016三合一職場辦公效率手冊
- Adobe Premiere Pro 2020基礎培訓教材
- Word排版之道
- Office 2013輕松辦公:Word/Excel/PowerPoint三合一超級應用大全(實戰案例版)
- Word-Excel-PPT 2010辦公應用從入門到精通(實戰強化版)
- 跟李銳學Excel數據分析
- Excel 2013實戰應用超級手冊
- 中文版AutoCAD 2012基礎與應用培訓教程
- Excel 2007表格·數據·圖表完全自學手冊
- 中文版Office2016大全
- Excel商務數據分析:思維、策略與方法
- Word/Excel/PPT從入門到精通
- 炫舞Power Point:PPT動畫創意設計
- Office 2013應用技巧實例大全
- DPDK應用基礎