Lỗi #REF , có cách nào khắc phục được không?

Liên hệ QC

Xuanthanh4991

Thành viên mới
Tham gia
11/9/21
Bài viết
1
Được thích
0
Chào các Anh Chị
Em có 1 bảng tính như file đính kèm
Ở Sheet1 Ô D3 em có công thức: =IFERROR(MATCH(VALUE(REPT(9,225)),'9967'!$D$9:$D$100),0) cho kết quả là 3
Và Sheet2 đặt tên là 9967
-----------------------------------
Khi em xoá sheet2 đi thì công thức ở ô D3 của sheet1 chuyển về :
=IFERROR(MATCH(VALUE(REPT(9,225)),#REF),0)
-----------------------------------
Cho em hỏi có cách nào khi xoá sheet2 mà công thức vẫn không thay đổi
Và khi em tạo lại 1 sheets mới với tên 9967 thì công thức ở sheet1 là cho ra kết quả là 3
 

File đính kèm

  • SOCHUYEN.xlsx
    14.9 KB · Đọc: 3
Chào các Anh Chị
Em có 1 bảng tính như file đính kèm
Ở Sheet1 Ô D3 em có công thức: =IFERROR(MATCH(VALUE(REPT(9,225)),'9967'!$D$9:$D$100),0) cho kết quả là 3
Và Sheet2 đặt tên là 9967
-----------------------------------
Khi em xoá sheet2 đi thì công thức ở ô D3 của sheet1 chuyển về :
=IFERROR(MATCH(VALUE(REPT(9,225)),#REF),0)
-----------------------------------
Cho em hỏi có cách nào khi xoá sheet2 mà công thức vẫn không thay đổi
Và khi em tạo lại 1 sheets mới với tên 9967 thì công thức ở sheet1 là cho ra kết quả là 3
1/ Cách đơn giản nhất là cho một ký tự trước dấu = hoặc cho dấu nháy phía trước hàm. khi thêm sheet mới thì thay 9967 là tên sheet mới sau đó xóa ký tự trước dấu = rồi nhấn Enter.
2/ Bạn không nên theo dõi mỗi xe là 1 sheet. Nếu có nhiều xe chứa ở nhiều sheet thì sẽ khó khăn trong việc tổng hợp và theo dõi.
3/ Nên theo dõi tất cả các xe trong 1 sheet sau đó sử dụng PivotTable là tổng hợp được tấtcả các xe.
 
PHP:
Sub VisibleFormula()
Dim Txt As String, Cll As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Cll In Selection
    If Rows(Cll.Row & ":" & Cll.Row).EntireRow.Hidden = False Then
        Txt = Cll.Formula
        If Left(Txt, 1) = "=" Then
            Txt = "'" & Txt
            Cll.Formula = Txt
        End If
    End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating =True
End Sub

Sub UnVisibleFormula()
Dim Txt As String, Cll As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Cll In Selection
    If Rows(Cll.Row & ":" & Cll.Row).EntireRow.Hidden = False Then
        Txt = Cll.Formula
        If Left(Txt, 1) = "=" Then
            Txt = "=" & Right(Txt, Len(Txt) - 1)
            Cll.Formula = Txt
        End If
    End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating =True
End Sub

Trình tự làm như sau:
1. Chọn vùng đặt công thức, chạy code VisibleFormula
2. Xóa sheet2 và tạo sheet 9967
3. Chọn vùng đặt công thức, chạy code UnVisibleFormula
 
Bạn có thể dùng 1 cách nữa là dùng Name:
1. Đặt 1 name là Vung, referto bạn đặt là =INDIRECT("'9967'!$D$9:$D$100")
2. Thay đoạn '9967'!$D$9:$D$100 trong công thức của bạn bằng Vung
3. Khi bạn xóa sheet 9967, công thức sẽ lỗi, nhưng khi bạn tạo 1 sheet khác và đặt tên 9967 thì công thức tự động lấy lại vùng cho bạn.
Bài đã được tự động gộp:

Hình như chủ thớt lên diễn đàn lần đầu nên không biết cách tìm lại bài của mình.
 
Web KT
Back
Top Bottom