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")
此方法网络上有很多教程,简述如下:
- 选择全部单元格
- “开始” => “条件格式” => “管理规则”
- 新建规则
- 使用公式确定要设置格式的单元格
- 填入上述公式
- 点击“格式按钮” => “填充”选项卡,选择喜欢的高亮当前行的颜色
- 一路确定
这便用条件格式实现了高亮当前行的功能。
但是,此时的高亮不会随着活动单元格的改变自动刷新,按 F9(重新计算) 可手动刷新高亮行的位置。
第二阶:添加高亮重复值的功能
此方法用到的公式:
=IF(CELL("type") = "b",FALSE,CELL("contents")=CELL("contents", INDIRECT(ADDRESS(ROW(), COLUMN()))))
受高亮当前行方式的启发,找到了高亮重复值的方法:
再添加一项条件格式,填入上述公式,将两条规则的关系按下图设置,并注意两点:
- 高亮重复值的规则在上,高亮当前行的规则在下
- “如果为真则停止”全部勾选

第三阶:VBA 实现自动刷新
此方法从网络获得,具体链接现在搜索不到了。
- 右键单击底部的工作表名称,选择“查看代码”命令
- 在代码框输入以下代码并退出 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的名称)并点击确定,这样,就不会每次都出现“启用宏”的提示了。
Excel 高亮当前行、高亮重复行的探索的更多相关文章
- PL/SQL显示行号和高亮当前行
PL/SQL Developer 如何显示行号: PL/SQL Developer 高亮当前行: OK!
- codeblocks设置当前行高亮
默认是不开启当前行高亮的. 如果想打开,选择:Settings>Editor>Editor Settings>Other options> 勾选Highlight line u ...
- python 去除Excel中的重复行数据
导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...
- Linux删除重复行 排序和不排序的做法--转载
本文部分翻译自这里,来自 Jadu Saikia 的博客,这个博客上有很多非常有用的小技巧,有空可以多看看. 通常如果我们想获取一个文件里不重复的行的时候,我们可以直接通过 sort -u 命令,先把 ...
- 通过自定义拦截器优雅的导出Excel并标红的重复数据
平时我们导入导出Excel的时候如果用poi导出,会发现光设置格式都要很多代码,看起来非常的不优雅.后来业务中遇到了需要导入非常巨大的Excel的需求.如果继续用poi的方式,因为poi把所有exce ...
- SQL Server删除重复行的6个方法
SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考. 1.如果有ID字段,就是具有唯一性的字段 delect ta ...
- linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计
转自:http://blog.sina.com.cn/s/blog_6797a6700101pdm7.html 去除重复行 sort file |uniq 查找非重复行 sort file |uniq ...
- linux用命令删除重复行
文本处理时,经常要删除重复行,下面是三种方法 第一,用sort+uniq,注意,单纯uniq是不行的. sort -n test.txt | uniq 第二,用sort+awk命令,注意,单纯awk同 ...
- Sublime文本排序&查找重复行&删除重复行
排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...
随机推荐
- js判断对象的某个属性是否存在
参考:https://www.jb51.net/article/141994.htm 原始数据, [ {"name":"向阳镇","id": ...
- MZY项目笔记:session歧路
from my typora MZY项目笔记:session歧路 文章目录 MZY项目笔记:session歧路 那该怎么办? 1. 手动加上cookie的header. 2.自己模拟一个Session ...
- hdfs数据迁移
有时候可能会进行hadoop集群数据拷贝的情况,可用以下命令进行拷贝 需要在目标集群上来进行操作 hadoop distcp hdfs://192.168.1.233:8020/user/hive/w ...
- Fllink学习
1.Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能. 现有的开源计算方案,会把流处理和批处 ...
- vue@cli3 项目模板怎么使用public目录下的静态文件,找了好久都不对,郁闷!
作为图片最好放在static目录下,但是vue@cli3没有static,网上都说放在public目录下,行,那就放吧,可问题是图片放了怎么使用 第一次尝试 肯定用绝对路径这就不说了,用相对路径,we ...
- Kotlin之内联回调函数
let 定义: let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择:let函数另一个作用就是可以避免写一些判断null的操作. 翻译: ...
- Centos7最小化系统安装_配置
本文总结了作者使用centos最小化安装时,碰到的问题和解决方案. 网络问题.作者使用虚拟机安装时,网卡并没有激活.操作: 1 cd /etc/sysconfig/network-script 2 v ...
- 什么是内存屏障? Why Memory Barriers ?
要了解如何使用memory barrier,最好的方法是明白它为什么存在.CPU硬件设计为了提高指令的执行速度,增设了两个缓冲区(store buffer, invalidate que ...
- Docker Compose 实践及梳理
Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试.生产等环境 文档 Produ ...
- 手把手教你如何玩转消息中间件(ActiveMQ)
手把手教你如何玩转消息中间件(ActiveMQ) 2018年07月15日 18:07:39 Cs_hnu_scw 阅读数 12270 标签: 中间件消息中间件ActiveMQ分布式集群 更多 个人分类 ...