Theo dõi các tham chiếu không hợp lệ (Microsoft Excel)
Joel lưu ý rằng khi anh ấy đóng một sổ làm việc có hàng nghìn công thức trong đó, anh ấy gần đây nhận được thông báo này: “Một công thức trong trang tính này chứa một hoặc nhiều tham chiếu không hợp lệ.” Joel tự hỏi làm thế nào anh ta có thể biết trang tính nào trong số bảy trang tính trong sổ làm việc này đang được tham chiếu. Làm thế nào tôi có thể tìm thấy công thức sai? Tôi không quan sát thấy bất kỳ vấn đề nào trong việc hiển thị thông tin trên báo cáo của mình.
Việc theo dõi các tham chiếu không hợp lệ có thể gây khó chịu. Có một số nơi bạn có thể bắt đầu xem xét. Đầu tiên là trong các công thức có trên trang tính. (Có, bạn cần thực hiện các bước này cho mỗi trang tính trong sổ làm việc.) Sử dụng hộp thoại Đi đến Đặc biệt (nhấn F5 và chọn Đặc biệt) để chọn chỉ chuyển đến các ô có lỗi. Sau đó, bạn có thể sử dụng phím Tab để di chuyển giữa bất kỳ ô nào mà Excel chọn.
Bạn cũng có thể sử dụng công cụ Tìm để tìm các lỗi có thể xảy ra. Chỉ cần nhấn Ctrl + F để hiển thị tab Tìm của hộp thoại Tìm và Thay thế, sau đó tìm kiếm ký tự #. Đảm bảo rằng bạn yêu cầu Excel thực hiện tìm kiếm trong Công thức. Kiểm tra bất kỳ thứ gì được tìm thấy để xem liệu đó có phải là lỗi hay không.
Bạn cũng nên xem bất kỳ phạm vi được đặt tên nào được xác định trong sổ làm việc của bạn. Xem từng tên trong hộp thoại Xác định (Chèn | Tên | Xác định), đảm bảo rằng bất kỳ tên nào trong hộp Tham chiếu đến không bao gồm bất kỳ dấu hiệu lỗi nào.
Đây không phải là tất cả những nơi có thể có lỗi; Excel thực sự giỏi trong việc để lỗi tồn tại ở rất nhiều nơi. Nếu bạn cần tìm kiếm lỗi thường xuyên, bạn có thể thử một macro xem qua các công thức của bạn để tìm bất kỳ lỗi tiềm ẩn nào.
Sub CheckReferences() Dim iSh As Integer Dim sShName As String Dim sht As Worksheet Dim c As Cell Dim sChar As String Dim rng As Range Dim i As Integer, j As Integer Dim wks As Worksheet Dim sChr As String, addr As String Dim sFormula As String, scVal As String Dim lNewRow As Long Dim vHeaders vHeaders = Array("Sheet Name", "Cell", "Cell Value", "Formula") 'check if 'Summary' worksheet is in workbook 'and if so, delete it With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlCalculationManual End With For i = 1 To Worksheets.Count If Worksheets(i).Name = "Summary" Then Worksheets(i).Delete End If Next i iSh = Worksheets.Count 'create a new summary sheet Sheets.Add After:=Sheets(iSh) Sheets(Sheets.Count).Name = "Summary" With Sheets("Summary") Range("A1:D1") = vHeaders End With lNewRow = 2 ' this will not work if the sheet is protected, ' assume that sheet should not be changed; so ignore it On Error Resume Next For i = 1 To iSh sShName = Worksheets(i).Name Application.Goto Sheets(sShName).Cells(1, 1) Set rng = Cells.SpecialCells(xlCellTypeFormulas, 23) For Each c In rng addr = c.Address sFormula = c.Formula scVal = c.Text For j = 1 To Len(c.Formula) sChr = Mid(c.Formula, j, 1) If sChr = "[" Or sChr = "!" Or _ IsError(c) Then 'write values to summary sheet With Sheets("Summary") .Cells(lNewRow, 1) = sShName .Cells(lNewRow, 2) = addr .Cells(lNewRow, 3) = scVal .Cells(lNewRow, 4) = "'" & sFormula End With lNewRow = lNewRow + 1 Exit For End If Next j Next c Next i ' housekeeping With Application .ScreenUpdating = True .DisplayAlerts = True .Calculation = xlCalculationAutomatic End With Set wks = Nothing Set sht = Nothing Set rng = Nothing ' tidy up Sheets("Summary").Select Columns("A:D").EntireColumn.AutoFit Range("A1:D1").Font.Bold = True Range("A2").Select End Sub
Macro này tạo một trang tính được gọi là “Tóm tắt” được sử dụng để liệt kê thông tin về bất kỳ lỗi nào được phát hiện trong các liên kết trang tính.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (8662) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: