2009-03-23 3 views
9

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?

+0

Có một thread trước về chủ đề này: http://stackoverflow.com/questions/61432/tool-for-deciphering-spreadsheets/61448 – Fionnuala

Trả lời

10

Để 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.

+0

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

+0

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? –

0

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ì đó.

1

Giải pháp đơn giản: Ctrl - `(phím ngay trên Tab)

+2

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

+0

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. –

4

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 
2

Đ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.

+0

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

+1

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

3

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

0

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 
2

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

  1. 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ể .
  2. 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.
  3. Hộp thoại "Quy tắc định dạng mới" sẽ mở ra.
  4. Chọn "Sử dụng một công thức để xác định các tế bào để định dạng"
  5. 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.
  6. Nhấp vào Định dạng ...
  7. Hộp thoại "Định dạng ô" sẽ mở ra.
  8. Chọn định dạng bạn muốn áp dụng. Ví dụ. nền màu vàng.
  9. Nhấp vào OK.
  10. 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

You've created a new formatting rule!

+0

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