Có cách nào đơn giản để thực hiện việc này, thông qua macro hay không? Theo trường được tính toán, tôi có nghĩa là trường được tính từ các trường khác, so với giá trị được nhập thô. Bằng cách đánh dấu, tôi có nghĩa là màu khác nhau. Tôi cần điều này để hiểu rõ hơn về một bảng tính lớn từ một khách hàng.Làm cách nào để đánh dấu các trường được tính toán trong bảng tính Excel?
Trả lời
Để thực hiện thủ công, hãy nhấn phím F5 để hiển thị hộp thoại GoTo. Nhấp vào nút Các tế bào đặc biệt. Trên màn hình tiếp theo, chọn Công thức (đó là một tùy chọn ở bên phải).
Excel sẽ chọn tất cả các ô phù hợp. Bây giờ nó chỉ là vấn đề áp dụng định dạng.
này hoạt động và rất đơn giản ... giải pháp dựa trên vĩ mô được đề xuất bởi người khác chỉ cần không làm việc – DSO
Và tôi chỉ nhận được ONE điểm, trong khi giải pháp không làm việc được nhiều hơn? –
Bạn có thể sử dụng thuộc tính Interior.ColorIndex để thay đổi màu nền các tế bào hoạt động của:
ActiveCell.Interior.ColorIndex = 36
Bạn cũng có thể áp dụng nó vào một khoảng:
Range("A1:A5").Interior.Color = RGB(200,160,35)
này áp dụng cho Excel 2003, tôi chưa sử dụng phiên bản mới nhất nhưng tôi nghi ngờ điều này đã thay đổi.
Bạn thường có thể ghi macro và sau đó xem mã được tạo để xem cách thực hiện điều gì đó.
Giải pháp đơn giản: Ctrl - `(phím ngay trên Tab)
này sẽ chỉ thay đổi chế độ xem để hiển thị công thức. Câu hỏi được yêu cầu thay đổi màu nền của các trường này. – AgentConundrum
Tuyệt vời, hiển thị công thức nội tuyến. Giải pháp tốt nhất cho vấn đề gốc: 'Tôi cần điều này để hiểu rõ hơn một bảng tính lớn từ máy khách. –
Tôi sẽ giả sử bạn đang chỉ nói về công thức tế bào chứ không phải là tính toán VBA đây, kể từ khi bạn có thể thiết lập các màu tế bào trong thủ tục VBA của bạn nếu bạn làm theo cách đó.
Cách để thực hiện việc này là kiểm tra ô cho công thức sau khi bạn đã hoàn thành công thức và thay đổi màu của nó tại điểm đó. Sự kiện liên quan ở đây là thay đổi, và tài sản HasFormula của tế bào sẽ cho bạn biết các tế bào là một giá trị văn chương, hoặc tính từ công thức:
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
Đoạn code dưới đây nên chu kỳ qua từng tờ, làm nổi bật tất cả các tế bào bắt đầu với một '=' và màu sắc nó là màu mong muốn (hiện tại màu 36 là Light Yellow).
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
Nó cũng sẽ dừng lại sau 40 ô trống liên tiếp (để tránh xử lý tất cả của một tờ chủ yếu là trống).
Hy vọng điều này sẽ hữu ích.
Excel VBA cung cấp thuộc tính cho công thức, HasFormula, mà bạn có thể sử dụng thay vì kiểm tra ký tự =. Nếu không, điều này có vẻ tốt cho việc thiết lập màu sắc trên các lĩnh vực có sẵn. Câu trả lời của tôi chỉ bao gồm những câu trả lời mà bạn thay đổi sau khi mã được đưa ra. – AgentConundrum
xin lỗi đã bỏ phiếu quá nhanh ... điều này nghe giống như những gì tôi cần nhưng đã xảy ra lỗi biên dịch và khi tôi sửa lỗi và chạy nó, nó đã bị khóa.đã không thực sự có thời gian để muck với nó, vì vậy tôi đã bỏ, nhưng ai đó chỉ đưa ra một giải pháp không có lập trình mà chỉ làm việc – DSO
Excel đã tích hợp sẵn tính năng của "Trace người phụ thuộc" (trong đó cho thấy mũi tên để cho bạn thấy những tế bào tính)
Chọn phạm vi chứa dữ liệu của bạn.
Excel 2007 -> Công thức -> Theo dõi người phụ thuộc
Tôi thích mã của Craig ở đây, vì nó giữ bố trí của trang tính hiện có và chưa hiển thị những gì được tính và cái gì không phải là 'trong nháy mắt', nhưng tôi đã làm lại một chút để thực hiện công việc tốt hơn ra khỏi khu vực hoạt động của trang tính và tôi đã thêm một chương trình con 'UnhighlightFormulas' để có thể dễ dàng hoàn tác định dạng (ví dụ: trước khi in). Nó đã được thử nghiệm trong Excel 2007. Lưu ý rằng bạn sẽ mất bất kỳ màu nền ô nào khác khi chạy nó.
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
TLDR;
Sử dụng định dạng có điều kiện với Công thức để đánh dấu tất cả các ô có chứa công thức.
Chi tiết
Trong MS Office 365 Version: 5.0.4667.1002, các công việc sau
- Chọn một loạt các tế bào.
- Trường hợp1: Sử dụng
Ctrl + A
để chọn tất cả các ô . - Case2: Chọn một phạm vi cụ thể .
- Trường hợp1: Sử dụng
- Chuyển đến tab Trang chủ, phần Kiểu và chọn Định dạng có điều kiện> Quy tắc mới.
- Hộp thoại "Quy tắc định dạng mới" sẽ mở ra.
- Chọn "Sử dụng một công thức để xác định các tế bào để định dạng"
- Trong hộp văn bản, thêm các nguyên tắc sau:
=IsFormula(A1)
- Trường hợp1: Nếu bạn chọn tất cả các ô, sử dụng
A1
vì nó là người đầu tiên ô. - Case2: Nếu bạn đã chọn một phạm vi cụ thể, hãy thay thế
A1
bằng ô đầu tiên trong phạm vi của bạn.
- Trường hợp1: Nếu bạn chọn tất cả các ô, sử dụng
- Nhấp vào Định dạng ...
- Hộp thoại "Định dạng ô" sẽ mở ra.
- Chọn định dạng bạn muốn áp dụng. Ví dụ. nền màu vàng.
- Nhấp vào OK.
- Tất cả các ô hiện có công thức sẽ có nền màu vàng.
Ảnh chụp màn hình
Làm việc hoàn hảo và chính xác là những gì tôi đang tìm kiếm. – emragins
Có một thread trước về chủ đề này: http://stackoverflow.com/questions/61432/tool-for-deciphering-spreadsheets/61448 – Fionnuala