Hỏi về cách bẫy lỗi trong excell

  • Thread starter Thread starter 06th2d
  • Ngày gửi Ngày gửi
Liên hệ QC

06th2d

Thành viên chính thức
Tham gia
15/7/10
Bài viết
60
Được thích
2
Mình dùng hàm VlOOkUP để lấy giá trị tương ứng sau khi nhập thông tin:

ví dụ : có bảng dò :
cột 1-------cột2
(mKh)------(tênKh)
001--------Ng Văn A
002--------Trần văn B
----------------------------bảng tìm kiếm
xậy dựng hàm sao cho, chỉ cần nhập vào 002 cột kế bên sẽ tự điền, trần văn B...Nhưng vấn đề là khi chưa nhập vào mã khách hàng thì tự động bên cột tên khách hàng sẽ có #N/A vì chưa nhập liệu.
sau khi tìm hiểu trên diễn đàn, mình cải thiện bằng :
IF(ISERROR(Cong_thuc_vlookup)," ",Cong_thuc_vlookup)

hàm chạy tốt, nhưng có chỗ mình hiểu lắm:
hàm
ISERROR để kiểm tra tất cả các lỗi, như công thức ở trên, nếu nó thấy có lỗi thì tự động sẽ điền " "(mình làm vậy để khỏi thấy #n/a) Nhưng nếu minh nhập giá trị không có trên bảng dò nó cũng " "

cho mình hỏi có cách nào để không thấy #n/a mà khi nhập vào bị sai nó hiện lện chữ "giá trị sai" trong ô không .

Tức là mình muốn tách riêng 2 trường hợp : chưa điền và điền sai, chưa điền thì " " ,còn đền sai thì "giá trị sai"

Xin cảm ơn
 
Mình dùng hàm VlOOkUP để lấy giá trị tương ứng sau khi nhập thông tin:

ví dụ : có bảng dò :
cột 1-------cột2
(mKh)------(tênKh)
001--------Ng Văn A
002--------Trần văn B
----------------------------bảng tìm kiếm
xậy dựng hàm sao cho, chỉ cần nhập vào 002 cột kế bên sẽ tự điền, trần văn B...Nhưng vấn đề là khi chưa nhập vào mã khách hàng thì tự động bên cột tên khách hàng sẽ có #N/A vì chưa nhập liệu.
sau khi tìm hiểu trên diễn đàn, mình cải thiện bằng :
IF(ISERROR(Cong_thuc_vlookup)," ",Cong_thuc_vlookup)

hàm chạy tốt, nhưng có chỗ mình hiểu lắm:
hàm
ISERROR để kiểm tra tất cả các lỗi, như công thức ở trên, nếu nó thấy có lỗi thì tự động sẽ điền " "(mình làm vậy để khỏi thấy #n/a) Nhưng nếu minh nhập giá trị không có trên bảng dò nó cũng " "

cho mình hỏi có cách nào để không thấy #n/a mà khi nhập vào bị sai nó hiện lện chữ "giá trị sai" trong ô không .

Tức là mình muốn tách riêng 2 trường hợp : chưa điền và điền sai, chưa điền thì " " ,còn đền sai thì "giá trị sai"

Xin cảm ơn

Nếu bạn chấp nhận cả dữ liệu D1 = <một loạt dấu cách>001<một loạt dấu cách> thì công thức có dạng
Mã:
=IF(TRIM($D1)="";"";IF(ISERROR(VLOOKUP(TRIM($D1);$A$1:$B$2;2;0));"sai gia tri";VLOOKUP(TRIM($D1);$A$1:$B$2;2;0)))

Còn nếu chỉ chấp nhận D1 = 001, tức nếu trước và/hoặc sau có dấu cách thì coi như "gia trị sai" thì
Mã:
=IF($D1="";"";IF(ISERROR(VLOOKUP($D1;$A$1:$B$2;2;0));"gia tri sai";VLOOKUP($D1;$A$1:$B$2;2;0)))

Nếu Excel >= 2007 thì cũng có thể

Mã:
=IF($D1="";"";IFERROR(VLOOKUP($D1;$A$1:$B$2;2;0);"gia tri sai"))
 
cảm ơn siwtom rất nhiều !!!
----------------
mình không hiểu :
tại sao mình dùng cách


=IF($Ô_tham_chiếu="";"";IFERROR(VLOOKUP($Ô_tham_chiếu;$vùng_tham_chiếu;2;0);"gia tri sai"))

ô mình chưa nhập mã để nó tìm giá trị, nó vẫn báo là "giá trị sai"
theo logic công thức của bạn đưa ra phải đúng nhưng tại sao, nó lại bị như vậy...bạn xem giúp mình trong công thức này có bị lỗi chỗ nào không
theo mình hiểu là:
--> ktra nếu ô d4 =null thì xuất ra null, ngược lại thì chạy hàm ktra lỗi, với giá trị vlookup.
từ công thức của bạn
mình thay thế 1 chút như thế này

----------------
=IF(ISBLANK(ô_tham_chieu)," ",IFERROR(VLOOKUP(ô_tham_chieu,Vung_Tham_Chieu,2,0)," Mã Không Đúng"))

chạy ok!!!
cho mình hỏi thêm :
1-
như bạn nói chỉ có excell > 2k7 mới dùng cách của bạn được...tại sao vậy ??? nếu mình lưu file kiểu 2k3 nó có chạy đúng nữa không ???
2-
khi nó xuất hiện "giá trị sai" mình có thể cho nó có màu chữ màu đỏ, hoặc tô màu khung cho nó thu hút sự chú ý không...kiểu như, nhập đúng thì ra tên , nhập không đúng thì "sai rồi" ...

Cảm ơn !!!
 
Lần chỉnh sửa cuối:
cảm ơn siwtom rất nhiều !!!
----------------
mình không hiểu :
tại sao mình dùng cách


=IF($Ô_tham_chiếu="";"";IFERROR(VLOOKUP($Ô_tham_chiếu;$vùng_tham_chiếu;2;0);"gia tri sai"))

ô mình chưa nhập mã để nó tìm giá trị, nó vẫn báo là "giá trị sai"
theo logic công thức của bạn đưa ra phải đúng nhưng tại sao, nó lại bị như vậy...từ công thức của bạn
mình thay thế 1 chút như thế này



----------------
=IF(ISBLANK(ô_tham_chieu)," ",IFERROR(VLOOKUP(ô_tham_chieu,Vung_Tham_Chieu,2,0)," Mã Không Đúng"))

chạy ok!!!
cho mình hỏi thêm :
1-
như bạn nói chỉ có excell > 2k7 mới dùng cách của bạn được...tại sao vậy ??? nếu mình lưu file kiểu 2k3 nó có chạy đúng nữa không ???
2-
khi nó xuất hiện "giá trị sai" mình có thể cho nó có màu chữ màu đỏ, hoặc tô màu khung cho nó thu hút sực chú ý không...kiểu như, nhập đúng thì ra tên , nhập không đúng thì "sai rồi" ...

Cảm ơn !!!
 
cảm ơn siwtom rất nhiều !!!
----------------
mình không hiểu :
tại sao mình dùng cách


=IF($Ô_tham_chiếu="";"";IFERROR(VLOOKUP($Ô_tham_chiếu;$vùng_tham_chiếu;2;0);"gia tri sai"))

ô mình chưa nhập mã để nó tìm giá trị, nó vẫn báo là "giá trị sai"
theo logic công thức của bạn đưa ra phải đúng nhưng tại sao, nó lại bị như vậy...từ công thức của bạn
mình thay thế 1 chút như thế này



----------------
=IF(ISBLANK(ô_tham_chieu)," ",IFERROR(VLOOKUP(ô_tham_chieu,Vung_Tham_Chieu,2,0)," Mã Không Đúng"))

chạy ok!!!
cho mình hỏi thêm :
1-
như bạn nói chỉ có excell > 2k7 mới dùng cách của bạn được...tại sao vậy ??? nếu mình lưu file kiểu 2k3 nó có chạy đúng nữa không ???
2-
khi nó xuất hiện "giá trị sai" mình có thể cho nó có màu chữ màu đỏ, hoặc tô màu khung cho nó thu hút sực chú ý không...kiểu như, nhập đúng thì ra tên , nhập không đúng thì "sai rồi" ...

Cảm ơn !!!

Excel 2003 không có hàm IFERROR
Vậy nếu 2003 thì phải dùng
Mã:
=IF($D1="";"";IF(ISERROR(VLOOKUP($D1;$A$1:$B$2;2;0));"gia tri sai";VLOOKUP($D1;$A$1:$B$2;2;0)))
 
Web KT

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

Back
Top Bottom