有没有一种简单的方法可以通过宏或其他方式来做到这一点?通过计算字段,我指的是从其他字段计算的字段与原始输入值。突出显示我的意思是不同颜色。我需要这个来更好地理解客户端的大型电子表格。
答案 0 :(得分:11)
要手动执行此操作,请按F5键以显示GoTo对话框。单击特殊单元格按钮。在下一个屏幕上,选择公式(它是右侧的选项)。
Excel将选择匹配的所有单元格。现在只需要应用格式化。
答案 1 :(得分:4)
我假设你只是在讨论单元格公式而不是VBA计算,因为你可以在VBA程序中设置单元格颜色,如果你这样做的话。
执行此操作的方法是在完成后检查单元格中的公式,并在此时更改其颜色。此处的相关事件是Change,单元格的HasFormula属性将告诉您单元格是文字值,还是根据公式计算:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.HasFormula Then Target.Interior.Color = vbRed Else ' remove background colour entirely (i.e. No Fill) Target.Interior.ColorIndex = xlColorIndexNone End If End Sub
答案 2 :(得分:3)
Excel具有“Trace Dependents”的内置功能(显示箭头以显示计算的单元格)
选择包含数据的范围 Excel 2007 - >公式 - >跟踪家属
答案 3 :(得分:3)
对公式使用条件格式以突出显示包含公式的所有单元格。
在MS Office 365版本:5.0.4667.1002中,以下工作
Ctrl + A
选择所有单元格。=IsFormula(A1)
A1
,因为它是第一个单元格。A1
替换为您所在范围内的第一个单元格。
答案 4 :(得分:2)
下面的代码应循环显示每张纸,突出显示以'='开头的每个单元格,并将其着色为所需的颜色(当前颜色为浅黄色)。
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")
End Sub
它也将在连续40个空白单元格后停止(以避免处理所有大部分空白单元格)。
希望这有帮助。
答案 5 :(得分:1)
简单的解决方案: Ctrl - `(Tab上方的键)
答案 6 :(得分:0)
您可以使用Interior.ColorIndex属性更改活动单元格的背景颜色:
ActiveCell.Interior.ColorIndex = 36
您也可以将它应用于范围:
Range("A1:A5").Interior.Color = RGB(200,160,35)
这适用于Excel 2003,我没有使用过最新版本,但我怀疑这已经改变了。
您通常可以录制一个宏,然后查看生成的代码,看看是如何完成的。
答案 7 :(得分:0)
我在这里喜欢Craig的代码,因为它保留了现有工作表的布局,但却显示了计算内容和“一目了然”的内容,但我对其进行了重新设计,以便更好地完成工作工作表的活动区域,我添加了一个'UnhighlightFormulas'子程序,因此可以轻松撤消格式化(例如在打印之前)。它已经在Excel 2007中进行了测试。请注意,在运行此文件时,您将丢失任何其他单元格背景颜色。
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