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