Table of contents
在本教程中,你将学习3种不同的方法,在Excel中动态地突出所选单元格的行和列。
当长时间查看一个大的工作表时,你可能最终会忘记你的光标在哪里,以及你正在看哪些数据。 为了准确了解你在任何时候的位置,让Excel自动为你高亮显示活动的行和列!当然,高亮显示应该是动态的,每次你选择另一个单元格时都会改变。 从本质上讲,这就是我们要实现的目标。
用VBA自动高亮显示选定单元格的行和列
这个例子展示了如何用VBA程序化地突出显示活动列和行。 为此,我们将使用 选择改变 的事件。 工作表 对象。
首先,你要通过设置以下步骤清除工作表上所有单元格的背景色 颜色索引 属性为0。 然后,你通过设置活动单元格的整个行和列的 颜色索引 属性到所需颜色的索引号。
Private Sub Worksheet_SelectionChange( ByVal Target As Range) If Target.Cells.Count> 1 Then Exit Sub Application.ScreenUpdating = False '清除所有单元格的颜色 Cells.Interior.ColorIndex = 0 With Target '高亮选择单元格的行和列 .EntireRow.Interior.ColorIndex = 38 .EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End Sub定制代码
如果你想根据自己的需要定制代码,这些小提示可能会派上用场。
- 我们的示例代码在上面的GIF中使用了两种不同的颜色--行的颜色索引为38,列的颜色索引为24。 为了 改变高光颜色 ,只需用你选择的任何ColorIndex代码替换这些代码。
- 为了获得行和列的颜色,在 同路 ,两者使用相同的颜色索引号。
- 为了只突出显示 活动行 ,删除或注释掉这一行。 .EntireColumn.Interior.ColorIndex = 24
- 为了只突出显示 活动栏 ,删除或注释掉这一行。 .EntireRow.Interior.ColorIndex = 38
如何将代码添加到你的工作表中
要想让代码在特定工作表的后台默默执行,你需要在属于该工作表的代码窗口中插入代码,而不是在普通模块中。 要做到这一点,请执行以下步骤。
- 在你的工作簿中,按Alt + F11进入VBA编辑器。
- 在左边的项目资源管理器中,你会看到所有打开的工作簿及其工作表的列表。 如果你没有看到,请使用Ctrl + R快捷键,将项目资源管理器窗口调到视图。
- 找到目标工作簿,在其 微软Excel对象 在这个例子中,它是 第1张 .
- 在右边的代码窗口中,粘贴上述代码。
- 将你的文件保存为 Macro-enabled Workbook (.xlsm)。
优势 :一切都在后台完成;用户方面不需要调整/定制;适用于所有Excel版本。
缺点 弊端:有两个基本弊端,使这种技术在某些情况下不适用。
- 准则 清除背景颜色 如果你有任何有颜色的单元格,请不要使用这个解决方案,因为你的自定义格式会丢失。
- 执行这段代码 大厦 撤销功能 在工作表上,你将无法通过按Ctrl + Z来撤销一个错误的操作。
不用VBA就能突出显示活动行和列
在没有VBA的情况下,你能得到的最好的突出显示所选行和/或列的方法是Excel的条件格式化。 要设置它,执行这些步骤。
- 选择你的数据集,在其中做高亮显示。
- 关于 首页 选项卡,在 风格 组,点击 新规则 .
- 在 新的格式化规则 对话框,选择 使用一个公式来决定哪些单元格需要格式化 .
- 在 格式化该公式为真的数值 框中,输入这些公式之一。
为了强调 活动行 :
=CELL("行")=ROW()
为了强调 活动栏 :
=CELL("col")=COLUMN()
See_also: 如何导出Outlook联系人为了强调 活动的行和列 :
=OR(CELL("row")=ROW(), CELL("col")=COLUMN() )
所有的公式都使用了CELL函数来返回所选单元格的行/列号。
- 点击 格式 按钮,切换到 填充 标签,并选择你喜欢的颜色。
- 点击两次 "确定",关闭两个对话窗口。
如果你觉得你需要更详细的说明,请看如何创建基于公式的条件格式化规则。
在这个例子中,我们选择了OR公式,将列和行都染成相同的颜色。 这需要较少的工作,适合于大多数情况。
不幸的是,这个方案没有VBA方案那么好,因为它需要 手动重新计算工作表 (默认情况下,Excel只在输入新数据或编辑现有数据后重新计算工作表,而不是在选择发生变化时。 因此,你选择另一个单元格--什么也没有发生。 按F9--工作表被刷新,公式被重新计算,高亮显示被更新。
为了让工作表自动重新计算,每当 选择改变 事件发生时,你可以把这个简单的VBA代码放在你的目标工作表的代码模块中,就像前面的例子中解释的那样。
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End Sub这段代码迫使选定的范围/单元格重新计算,这反过来又迫使CELL函数更新,条件格式化反映变化。
优势 :与之前的方法不同,这个方法不会影响你手动应用的现有格式。
缺点 导致Excel性能下降的原因:可能会使Excel的性能恶化。
- 为了使条件格式化发挥作用,你需要强迫Excel在每次改变选择时重新计算公式(可以用F9键手动计算,也可以用VBA自动计算)。 强制重新计算可能会降低你的Excel的速度。 由于我们的代码重新计算的是选择而不是整个工作表,只有在真正大而复杂的工作簿上才会有明显的负作用。
- 由于CELL函数在Excel 2007及以上版本中可用,该方法在早期版本中无法使用。
使用条件格式化和VBA突出显示选定的行和列
如果前面的方法大大降低了你的工作簿的速度,你可以用不同的方法来完成任务--与其在用户的每一次移动中重新计算工作表,不如在VBA的帮助下获得活动的行/列编号,然后通过使用条件格式化公式将该编号提供给ROW()或COLUMN()函数。
为了实现这一目标,以下是你需要遵循的步骤。
- 在你的工作簿中添加一个新的空白工作表,并将其命名为 帮手表 这个工作表的唯一目的是存储两个数字,代表包含选定单元格的行和列,因此你可以在以后安全地隐藏这个工作表。
- 在你想实现高亮显示的工作表的代码窗口中插入下面的VBA。 详细说明请参考我们的第一个例子。 Private Sub Worksheet_SelectionChange( ByVal Target As Range) Application.ScreenUpdating = False Worksheets( "Helper Sheet").Cells(2, 1) = Target.Row Worksheets( "Helper Sheet") .Cells(2, 2) = Target.Column Application.ScreenUpdating= True End Sub
上述代码将活动行和列的坐标放到名为 "Helper Sheet "的工作表中。 如果你在步骤1中对工作表的命名不同,请相应改变代码中的工作表名称。 行号被写入A2,列号被写入B2。
- 在你的目标工作表中,选择整个数据集,用下面的公式创建一个条件格式化规则。 上面的例子中提供了一步步的指导。
而现在,让我们详细介绍一下这三个主要的用例。
如何突出显示活动行
要突出显示你的光标目前所在的行,用这个公式设置一个条件格式化规则。
=ROW()='帮助表'!$A$2
结果是,用户可以清楚地看到当前选择的是哪一行。
如何突出显示活动列
要想突出显示所选的列,可以用这个公式将列号送入COLUMN函数。
=COLUMN()='帮助工作表'!$B$2
现在,高亮显示的栏目让你可以舒适而毫不费力地阅读完全专注于它的垂直数据。
如何突出显示活动的行和列
要想让选定的行和列都自动获得相同颜色的阴影,请将ROW()和COLUMN()函数合并为一个公式。
=OR(ROW()='Helper Sheet'!$A$2, COLUMN()='Helper Sheet'!$B$2)
相关的数据会立即成为焦点,所以你可以避免误读。
优势 优化性能;可在所有Excel版本中使用
缺点 : 最长的设置
这就是如何在Excel中高亮显示所选单元格的列和行。 感谢你的阅读,期待下周在我们的博客上见到你
供下载的实践工作手册
突出显示活动行和列(.xlsm文件)