Excel 高亮當前行、高亮重復行的探索


本文原創,轉載請注明出處:https://www.cnblogs.com/wotent/p/15348891.html

TLDR

下載文件 高亮.zip ,將解壓后的“高亮.xlam”保存在 C:\Users\用戶名\AppData\Roaming\Microsoft\AddIns 中。

按照本文最后的步驟5和步驟6設置即可。

介紹

在 Excel 的日常操作中,經常需要用到高亮當前行或當前列的功能,如 WPS 的“閱讀模式”和易用寶的“聚光燈”功能。

但無論 WPS 還是 易用寶,都缺少我自己需要的另外一個功能:高亮重復值。

我需要的“高亮重復值”功能,並不是條件格式中的“重復值”,而是高亮顯示與活動單元格具有相同值的單元格。

 

 第一階:高亮當前行(條件格式)

此方法用到的公式:

=ROW()=CELL("row")

此方法網絡上有很多教程,簡述如下:

  1. 選擇全部單元格
  2. “開始” => “條件格式” => “管理規則”
  3. 新建規則
  4. 使用公式確定要設置格式的單元格
  5. 填入上述公式
  6. 點擊“格式按鈕” => “填充”選項卡,選擇喜歡的高亮當前行的顏色
  7. 一路確定

這便用條件格式實現了高亮當前行的功能。

但是,此時的高亮不會隨着活動單元格的改變自動刷新,按 F9(重新計算) 可手動刷新高亮行的位置。

第二階:添加高亮重復值的功能

此方法用到的公式:

=IF(CELL("type") = "b",FALSE,CELL("contents")=CELL("contents", INDIRECT(ADDRESS(ROW(), COLUMN()))))

受高亮當前行方式的啟發,找到了高亮重復值的方法:

再添加一項條件格式,填入上述公式,將兩條規則的關系按下圖設置,並注意兩點:

  1. 高亮重復值的規則在上,高亮當前行的規則在下
  2. “如果為真則停止”全部勾選

第三階:VBA 實現自動刷新

此方法從網絡獲得,具體鏈接現在搜索不到了。

  1. 右鍵單擊底部的工作表名稱,選擇“查看代碼”命令
  2. 在代碼框輸入以下代碼並退出 VBA 編輯器
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True
End Sub

這便實現了高亮行的自動刷新,高亮行始終顯示在活動單元格的那一行上,不用再手動點擊 F9 了。

但是,添加了 VBA 代碼后,不能保存為 xlsx,需要保存為 xlsm。

我按照上述的方法制作了一個空的 excel 文件,在此后的相當長一段時間內,我都復制這個“模板”來處理 Excel 文檔。

第四階:

第三階的方法,使用了很長時間,但有兩個很致使的問題:一是將文件發給他人的時候,會帶着 VBA 代碼和條件格式,以 xlsm 的格式發出去,造成他人的不便;二是處理普通 Excel 文件時,不能很方便的應用高亮功能(需要手動添加條件格式和 VBA 代碼)。

前幾天看到一篇文章(Excel 高亮顯示選擇行列【不影響格式】https://club.excelhome.net/thread-1372036-1-1.html),受其中注冊事件用法的啟發,決定將 VBA 代碼做成共享的,使 Excel 啟動時自動加載,並用 VBA 實現添加條件格式,這樣,對於任何 Excel 文件,只需點幾下按鈕即可實現高亮功能,且保存后的文件不帶有任何 VBA 代碼。

步驟1:

打開 Excel 程序,直接另存為 高亮.xlam 文件,保存至 C:\Users\用戶名\AppData\Roaming\Microsoft\AddIns 文件夾中。

步驟2:

打開此 高亮.xlam 文件,點擊“開發工具”選項卡中的“Visual Basic”打開“Microsoft Visual Basic for Applications”。(沒有“開發工具”選項卡的自行搜索添加“開發工具”選項卡的方法)

步驟3:

菜單“插入” => “模塊”

在對應的代碼窗口輸入以下代碼:

 1 Option Explicit
 2 Public HL
 3 Sub 自動刷新打開()
 4 Set HL = New SheetSelectionChangeHandler
 5 Set HL.handler = Application
 6 End Sub
 7 
 8 Sub 自動刷新關閉()
 9 HL = Null
10 End Sub
11 Sub 條件格式高亮添加()
12     Dim selectedRange As Range
13     Set selectedRange = Selection
14     
15     Cells.Select
16     Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")"
17     Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
18     With Selection.FormatConditions(1).Interior
19         .Color = RGB(146, 205, 220)
20     End With
21     Selection.FormatConditions(1).StopIfTrue = True
22     
23     Cells.Select
24     Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(CELL(""type"") = ""b"",FALSE,CELL(""contents"")=CELL(""contents"", INDIRECT(ADDRESS(ROW(), COLUMN()))))"
25     Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
26     With Selection.FormatConditions(1).Interior
27         .Color = RGB(0, 176, 90)
28     End With
29     Selection.FormatConditions(1).StopIfTrue = True
30     selectedRange.Select
31 End Sub

步驟4:

菜單“插入” => “類模塊”

在屬性窗口(如沒有,按 F4 打開屬性窗口)中將類模塊名稱改為SheetSelectionChangeHandler 

在對應的代碼窗口中輸入以下代碼:

1 Option Explicit
2 
3 Public WithEvents handler As Application
4 
5 Private Sub handler_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
6 Application.ScreenUpdating = True
7 End Sub

一定要在“Microsoft Visual Basic for Applications”窗口中點擊保存按鈕,如果直接關掉該窗口,默認是不保存的。

步驟5:

打開“文件” => “選項” => “自定義功能區”,“從下列位置選擇命令”設置為“宏”,設置為如下圖所示結構:

大功造成,現在,可以在“我的工具”選項卡中,點擊“條件格式高亮添加”按鈕來添加高亮相關的條件格式,點擊“自動刷新打開按鈕”使高亮區域根據活動單元格自動刷新。

步驟6:

點擊“開發工具”選項卡的“Excel 加載項”命令,選中“高亮”(高亮.xlam的名稱)並點擊確定,這樣,就不會每次都出現“啟用宏”的提示了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM