Hai vấn đề: tự động lọc dữ liệu theo 1 ô, và bỏ lỗi #N/A (1 người xem)

  • Thread starter Thread starter be bong
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

be bong

Thành viên mới
Tham gia
26/1/08
Bài viết
26
Được thích
50
Mình có 2 vấn đề nhờ các pác giải giúp :
1/Tại Sheet -BẢNG KÊ :Tại Cell H1 , khi mình đánh vào số 1 , tử đọng sẽ ra hàng chữ SỔ QUỸ TIỀM MẶT THÁNG 01 -2009 .Đồng thời sẽ lọc cho mình toàn bộ dữ liệu tháng 01 , có tính đầy đủ SỐ DƯ ĐẦU KỲ , CỘNG PHÁT SINH , SỐ DƯ CUỐI KỲ
2/Tại Sheet -T02-09 : Làm thế nào để không còn #N/A
 

File đính kèm

Mình có 2 vấn đề nhờ các pác giải giúp :
1/Tại Sheet -BẢNG KÊ :Tại Cell H1 , khi mình đánh vào số 1 , tử đọng sẽ ra hàng chữ SỔ QUỸ TIỀM MẶT THÁNG 01 -2009 .Đồng thời sẽ lọc cho mình toàn bộ dữ liệu tháng 01 , có tính đầy đủ SỐ DƯ ĐẦU KỲ , CỘNG PHÁT SINH , SỐ DƯ CUỐI KỲ
2/Tại Sheet -T02-09 : Làm thế nào để không còn #N/A

bạn có thể bẫy lỗi bằng hàm ISNA
ví dụ
=IF(ISNA(XXX),"",XXX)
 
Mình có 2 vấn đề nhờ các pác giải giúp :
1/Tại Sheet -BẢNG KÊ :Tại Cell H1 , khi mình đánh vào số 1 , tử đọng sẽ ra hàng chữ SỔ QUỸ TIỀM MẶT THÁNG 01 -2009 .Đồng thời sẽ lọc cho mình toàn bộ dữ liệu tháng 01 , có tính đầy đủ SỐ DƯ ĐẦU KỲ , CỘNG PHÁT SINH , SỐ DƯ CUỐI KỲ
2/Tại Sheet -T02-09 : Làm thế nào để không còn #N/A

1- Mình chưa biết cách làm
2- Để chặn lỗi #N/A bạn dùng thêm hàm bẫy lỗi cho hàm Vlookup. Nếu bạn chưa hiểu lắm về cách lồng hàm để bẫy lỗi (hay chặn lỗi) thì cứ bắt chước tôi làm như sau:

Ví dụ để chặn lỗi cho hàm =VLOOKUP(B14;NKC;2;0) trong ví dụ của bạn
bước 1: bạn copy hàm này thành 2 và chú ý thêm dấu ; vào giữa 2 hàm ==> VLOOKUP(B14;NKC;2;0);VLOOKUP(B14;NKC;2;0)
bước 2: bạn nhập thêm hàm để bẫy lỗi (nhập các chữ màu đỏ vào đầu và cuối hàm đứng trước như sau: =if(type(VLOOKUP(B14;NKC;2;0))=16;0;VLOOKUP(B14;NKC;2;0)

Tạm hiểu thế này: Nếu kết quả hàm VLOOKUP của bạn là lỗi (=16) thì cho kết quả là 0. Nếu kết quả hàm VLOOKUP của bạn không phải là lỗi thì lấy kết quả mà nó tìm được.

Với cách làm trên bạn có thể bẫy lỗi cho bất kỳ hàm nào cho dù nó dài và phức tạp đến mấy thì ta cũng chỉ thực hiện 2 bước với các thao tác như trên.

Lưu ý: dấu phân cách đối số trong máy có thể là (;) hoặc (,)
 
Lần chỉnh sửa cuối:
1
bước 1: bạn copy hàm này thành 2 và chú ý thêm dấu ; vào giữa 2 hàm ==> VLOOKUP(B14;NKC;2;0);VLOOKUP(B14;NKC;2;0)

Xin lỗi Bác nhé, nhưng cái vụ "chú ý thêm dấu ; vào giữa" thì không hẳn là (;) hay (,) mà do cách cài đặt tại Control Panel về định dạng dấu phân cách giữa số mà thôi.
 
tại sheet T02-09, hàng thứ 14:
cột A: =IF(ISNA(VLOOKUP(B14,NKC,2,0)),"",VLOOKUP(B14,NKC,2,0))

cột B: =IF(ISNA(VLOOKUP(IF($I$1='Bang ke'!A28,'Bang ke'!A28,""),'Bang ke'!$A$7:$J$65536,2,0)),"",VLOOKUP(IF($I$1='Bang ke'!A28,'Bang ke'!A28,""),'Bang ke'!$A$7:$J$65536,2,0))

cột F: =IF(ISNA(VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,4,0)),"",VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,4,0))

cột G: =IF(ISNA(VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,5,0)),"",VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,5,0))

cột H: =IF(ERROR.TYPE(H13+F14-G14),"",H13+F14-G14)
 
Xin lỗi Bác nhé, nhưng cái vụ "chú ý thêm dấu ; vào giữa" thì không hẳn là (;) hay (,) mà do cách cài đặt tại Control Panel về định dạng dấu phân cách giữa số mà thôi.

Cảm ơn bạn minhthien321 tôi sẽ bổ sung thêm lưu ý này vào bài trên.
 
Lần chỉnh sửa cuối:
Xin thêm một câu bẫy lỗi nữa cho xôm tụ
Cột F : IF(ISERROR(VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,4,0)),"",VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,4,0))
 
thay vì cột H: =IF(ERROR.TYPE(H13+F14-G14),"",H13+F14-G14) thì
cột H: =H13+F14-G14 (vẫn đễ giá trị ban đầu)
Nhưng tôi nghĩ, những cái điều kiện =IF(XX,"",YY) bạn vui lòng thay đổi =IF(XX,0,YY), vì giá trị "" không thể tham gia toán tử, sẽ cho ra #value.
còn muốn giấu 0 thì vào định dạng trong format cells thôi: chọn custom, gõ vào [<>0]#,##0;
dấu chấm phẩy (;) sau cùng là giấu số 0 đó.
 
tại sheet T02-09, hàng thứ 14:
cột A: =IF(ISNA(VLOOKUP(B14,NKC,2,0)),"",VLOOKUP(B14,NKC,2,0))

cột B: =IF(ISNA(VLOOKUP(IF($I$1='Bang ke'!A28,'Bang ke'!A28,""),'Bang ke'!$A$7:$J$65536,2,0)),"",VLOOKUP(IF($I$1='Bang ke'!A28,'Bang ke'!A28,""),'Bang ke'!$A$7:$J$65536,2,0))

cột F: =IF(ISNA(VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,4,0)),"",VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,4,0))

cột G: =IF(ISNA(VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,5,0)),"",VLOOKUP(B14,'Bang ke'!$B$7:$J$65536,5,0))

cột H: =IF(ERROR.TYPE(H13+F14-G14),"",H13+F14-G14)

Mình làm theo cách của pác minhthien321 chi dẫn mà vẫn ko dc. Mong các pác giúp đỡ cho
 
Mình làm theo cách của pác minhthien321 chi dẫn mà vẫn ko dc. Mong các pác giúp đỡ cho

Lẽ ra bạn phải bắt đầu từ nguồn ban đầu, sau đó mới kiểm tra lỗi của các nguồn kế tiếp, file của bạn quá nhiều lỗi, bạn phải sử dụng các hàm khác thôi, như SUMIF, SUMPRODUCT... chẳng hạn.
 
Lẽ ra bạn phải bắt đầu từ nguồn ban đầu, sau đó mới kiểm tra lỗi của các nguồn kế tiếp, file của bạn quá nhiều lỗi, bạn phải sử dụng các hàm khác thôi, như SUMIF, SUMPRODUCT... chẳng hạn.
Phiền bạn minhthien321 sửa giúp mình với , để file được hoàn thiện ấy mà
Thanks}}}}}
 
Xin mời các bạn tham khảo cuộc cách mạng cam đây!

Chỉ cần đề lại 3 trang tính mà thôi! Đó là 'BangKe', 'Thu_Chi' & 'A09' như trong file đính kèm

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [H1]) Is Nothing And IsDate([H1].Value) Then
   Dim Sh As Worksheet, Rng As Range, sRng As Range
   Dim MyAdd As String:             Dim Thg As Byte, Dg As Byte, Cot As Byte
   
   Set Sh = Sheets("A09"):          Sh.[A8].Resize(26, 8).ClearContents
   Thg = Month([H1].Value):         Dg = 7
   If Thg = 1 Then Sh.[h7].Value = [g6].Value
   Set Rng = Range([A5], [A65500].End(xlUp))
   Set sRng = Rng.Find(Thg, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      If Thg > 1 Then Sh.[h7].Value = sRng.Offset(-1, 6).Value
      Do
         Dg = 1 + Dg
         Sh.Cells(Dg, "A").Value = sRng.Offset(, 2).Value
         Cot = IIf(UCase$(Mid(sRng.Offset(, 1), 2, 1)) = "T", 3, 4)
         Sh.Cells(Dg, Cot).Value = Mid(sRng.Offset(, 1).Value, 3)
         Sh.Cells(Dg, "E").Value = sRng.Offset(, 3).Value
         Sh.Cells(Dg, "F").Resize(, 3).Value = sRng.Offset(, 4).Resize(, 3).Value
      
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
 End If
End Sub
Các bạn kiểm tra lại giúp, cảm ơn nhiều!
Chú ý khi sử dụng: Nhập vô [H1] 1 ngày bất kỳ của tháng cần tổng kết; Macro sẽ làm những việc còn lại cho bạn

Chúc thành công
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Web KT

Bài viết mới nhất

Back
Top Bottom