如何在Excel电子表格中突出显示计算的字段?

有没有一个简单的方法来做到这一点,通过macros观或其他? 计算字段是指从其他字段计算的字段与原始input值的比较。 突出我的意思是不同的颜色。 我需要这个来更好地理解客户端的大型电子表格。

要手动执行,按F5键调出GoTo对话框。 点击特殊单元格button。 在下一个屏幕上,select公式(这是一个选项在右边)。

Excel将select所有匹配的单元格。 现在只是应用格式化的问题。

我假设你只是在讨论单元格公式而不是VBA计算,因为如果你这样做,你可以在你的VBA过程中设置单元格的颜色。

做到这一点的方法是在完成后检查单元格的公式,然后在该点更改颜色。 这里的相关事件是Change,并且单元格的HasFormula属性会告诉你单元格是一个文字值还是从公式计算出来的:

私人小组Worksheet_Change(BYVAL目标作为范围)
    如果Target.HasFormula那么
         Target.Interior.Color = vbRed
    其他
         '完全删除背景颜色(即无填充)
         Target.Interior.ColorIndex = xlColorIndexNone
    万一
结束小组

Excel有一个内置的“跟踪依赖”(Trace Dependents)function(显示箭头显示计算的单元格)

select包含您的数据的范围。
Excel 2007 – >公式 – >跟踪依赖

下面的代码应该循环遍历每一张纸,突出显示以“=”开始的每个单元格,并将其着色为期望的颜色(当前为浅黄色36)。

Sub HighLightFormulas() Dim objSheet As Worksheet Dim strOriginalSheet As String Dim intMaxBlankCells As Integer Dim intBlankColumns As Integer Dim intBlankRows As Integer Dim intCurrentColumn As Integer Dim intCurrentRow As Long intMaxBlankCells = 40 strOriginalSheet = ActiveSheet.Name For Each objSheet In Worksheets intBlankRows = 0 intCurrentRow = 1 intCurrentColumn = 1 Do While intCurrentRow <= 65536 And intBlankRows <= intMaxBlankCells intBlankColumns = 0 intCurrentColumn = 1 Do While intCurrentColumn <= 256 And intBlankColumns <= intMaxBlankCells If Left(objSheet.Cells(intCurrentRow, intCurrentColumn).Formula, 1) = '=' Then objSheet.Cells(intCurrentRow, intCurrentColumn).Interior.ColorIndex = 36 End If intCurrentColumn = intCurrentColumn + 1 Loop If intCurrentColumn = intBlankColumns Then intBlankRows = intBlankRows + 1 Else intBlankRows = 0 End If intCurrentRow = intCurrentRow + 1 Loop Next objSheet Worksheets(strOriginalSheet).Activate Call MsgBox("The Highlighting process has completed", vbOKOnly, "Process Complete") 

结束小组

它也将停止40个连续的空白单元格后(为了避免处理所有的大部分空白表单)。

希望这可以帮助。

TLDR;

使用条件格式和公式来突出显示包含公式的所有单元格。

细节

在MS Office 365版本:5.0.4667.1002中,以下工作

  1. select一个单元格范围。
    • 情况1 :使用Ctrl + Aselect所有单元格
    • 情况2 :select一个特定的范围
  2. 转到“主页”选项卡的“样式”部分,然后select“条件格式”>“新build规则”。
  3. “新build格式规则”对话框将打开。
  4. select“使用公式确定要格式化的单元格”
  5. 在文本框中添加以下规则: =IsFormula(A1)
    • 情况1 :如果您select所有单元格,请使用A1因为它是第一个单元格。
    • 情况2 :如果您select了特定范围,请将A1replace为您范围内的第一个单元格。
  6. 点击格式…
  7. “格式单元格”对话框将打开。
  8. select你想申请的格式。 例如黄色的背景。
  9. 点击OK。
  10. 所有具有公式的单元现在将具有例如黄色背景。

截图

你已经创建了一个新的格式化规则!

简单的解决scheme:Ctrl – `(Tab上方的键)

您可以使用Interior.ColorIndex属性更改活动单元格的背景颜色:

 ActiveCell.Interior.ColorIndex = 36 

您也可以将其应用于一个范围:

 Range("A1:A5").Interior.Color = RGB(200,160,35) 

这适用于Excel 2003,我没有使用最新的版本,但我怀疑这已经改变。

您通常可以logging一个macros,然后查看生成的代码,看看如何完成。

我在这里喜欢Craig的代码,因为它保留了现有工作表的布局,但是显示了什么是计算的,哪些不是“一目了然”,但是我已经修改了一下,所以在处理活动区域方面做得更好我添加了一个'UnhighlightFormulas'子程序,所以可以很容易地撤消格式(例如打印之前)。 它已经在Excel 2007中进行了testing。请注意,运行此操作后,您将失去其他单元格背景颜色。

 Option Explicit Public Sub HighlightFormulas() ColorFormulas (36) '36 is yellow End Sub Public Sub UnhighlightFormulas() ColorFormulas (-4142) '-4142 is default End Sub Private Sub ColorFormulas(intColor As Integer) Dim wshSheet As Worksheet Dim rngRange As Range Dim rngCell As Range For Each wshSheet In Worksheets Set rngRange = RangeInUse(wshSheet) If Not rngRange Is Nothing Then For Each rngCell In rngRange If Left(rngCell.Formula, 1) = "=" Then If rngCell.Interior.ColorIndex <> intColor Then rngCell.Interior.ColorIndex = intColor Else If rngCell.Interior.ColorIndex <> -4142 Then rngCell.Interior.ColorIndex = -4142 '-4142 is default End If Next End If Next End Sub Private Function RangeInUse(ws As Worksheet) As Range Dim LastRow&, LastCol% ' adapted from http://www.beyondtechnology.com/geeks012.shtml ' Error-handling in case there is no data in worksheet On Error Resume Next With ws LastRow& = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row LastCol% = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column End With Set RangeInUse = ws.Range("A1", Cells(LastRow&, LastCol%)) End Function