PDA

View Full Version : Hàm ISNA và hàm ISERROR có giống nhau?



TRA KHUC RIVER
08-05-09, 08:18 AM
1/ Mình được biết hàm ISNA là hàm bẩy lỗi
- Cú pháp hàm ISNA(Biểu thức cần kiểm tra)
ISNA() sẽ trả về giá trị là TRUE nếu biểu thức đó trả về giá trị là #N/A, và FALSE nếu biểu thức đó không phải là #N/A
- Còn hàm ISERROR(value) kiểm tra value có lỗi hay không (tất cả các lỗi)
Như vậy 2 hàm này giống và khác nhau ở điểm nào?
2/ Mình có file excel được bác ndu làm giúp, mình muốn ứng dụng nó vào công việc nhưng đọc hoài không hiểu. Nhờ các bác giải thích giùm, mình rất cảm ơn.

BNTT
08-05-09, 08:27 AM
Câu 1: Bạn vừa hỏi vừa tự trả lời đấy thôi.
Hàm ISERROR dùng để bẫy tất cả các lỗi, kể cả lỗi #N/A!
Hàm ISNA chỉ dùng để bẫy lỗi #N/A!
Nói cách khác, hàm ISNA là một trong những đứa con của hàm ISERROR.
Bạn hiểu chúng giống nhau và khác nhau chỗ nào rồi chứ.

TRA KHUC RIVER
08-05-09, 08:39 AM
Vâng cảm ơn anh. Như vậy thay vì dùng hàm ISNA hay hàm ISEVEN...ta chỉ cần dùng hàm ISERROR là được đúng không anh?

huuthang_bd
08-05-09, 08:48 AM
Vâng cảm ơn anh. Như vậy thay vì dùng hàm ISNA hay hàm ISEVEN...ta chỉ cần dùng hàm ISERROR là được đúng không anh?
Iseven là hàm kiểm tra một số là số chẵn hay số lẻ chứ không phải là hàm kiểm tra lỗi. Vì vậy nó không có mối liên hệ nào với hàm Iserror hết nha bạn.

TRA KHUC RIVER
08-05-09, 08:57 AM
Vậy sao mình đọc các hàm do bác BNTT viết như thế này mà:

Nhóm Hàm IS

Nhóm hàm này gồm những hàm dùng để kiểm tra dữ liệu trong Excel.
Tất cả đều trả về giá trị TRUE nếu kiểm tra thấy đúng và FALSE nếu kiểm tra thấy sai.

Cú pháp:
=ISBLANK(value)

=ISERR(value)

=ISERROR(value)

=ISEVEN(number)

=ISLOGICAL(value)

=ISNA(value)

=ISNONTEXT(value)

=ISNUMBER(value)

=ISODD(number)

=ISREF(value)

=ISTEXT(value)Bảng tóm tắt cách dùng của nhóm hàm IS:
http://www.giaiphapexcel.com/forum/images/statusicon/wol_error.gifHình này đã được thay đổi kích thước. Nhấp vào đây để xem hình đầy đủ. Kích thước hình gốc là 839x501.http://i216.photobucket.com/albums/cc49/BNTT_photos/ISFUNCTIONS.jpg

BNTT
08-05-09, 08:57 AM
Vâng cảm ơn anh. Như vậy thay vì dùng hàm ISNA hay hàm ISEVEN...ta chỉ cần dùng hàm ISERROR là được đúng không anh?

Bạn xem cái này đi: Nhóm hàm IS (http://www.giaiphapexcel.com/forum/showthread.php?p=47923#post47923)

huuthang_bd
08-05-09, 09:03 AM
1/ Mình được biết hàm ISNA là hàm bẩy lỗi
- Cú pháp hàm ISNA(Biểu thức cần kiểm tra)
ISNA() sẽ trả về giá trị là TRUE nếu biểu thức đó trả về giá trị là #N/A, và FALSE nếu biểu thức đó không phải là #N/A
- Còn hàm ISERROR(value) kiểm tra value có lỗi hay không (tất cả các lỗi)
Như vậy 2 hàm này giống và khác nhau ở điểm nào?
-2/ Mình có file excel được bác ndu làm giúp, mình muốn ứng dụng nó vào công việc nhưng đọc hoài không hiểu. Nhờ các bác giải thích giùm, mình rất cảm ơn.
Trong file của bạn có các công thức sau:
1.

=IF(ISERROR(SEARCH(F$5,$D6,1)),"","X")Công thức này dùng để đánh dấu những chi tiết bị hỏng trong một máy.
SEARCH(F$5,$D6,1) Tìm tên chi tiết (F5) trong cell tình trạng (D6).
IF(ISERROR(SEARCH(F$5,$D6,1)),"","X") Nếu tìm không thấy (SEARCH() trả về #VALUE!, ISERROR() trả về TRUE) thì bỏ trống, Nếu tìm thấy (SEARCH() trả về một số, ISERROR() trả về FALSE) thì đánh dấu "X".
2.

{=SUMPRODUCT((TRANSPOSE($F7:$J7)="X")*(DG!$D$4:$D$8))}Tính tổng thành tiền dựa vào các chi tiết hỏng được đánh dấu. Ở đây có lẽ hàm TRANSPOSE() là hơi lạ. Do $F7:$J7 là một mảng 1 dòng, DG!$D$4:$D$8 là mảng 1 cột nên phải dùng TRANSPOSE() để chuyển mảng $F7:$J7 thành mảng dòng. Như vậy hàm SUMPRODUCT() mới hiểu. Còn công thức mảng là do hàm TRANSPOSE() luôn được sử dụng với công thức mảng.

Tuy nhiên, nếu bạn sử dụng file này thì tôi đề xuất bạn chỉnh lại cấu trúc bảng đơn giá theo chiều ngang. Như vây công thức sẽ không cần TRANSPOSE() và công thức mảng.

TRA KHUC RIVER
08-05-09, 09:16 AM
Cảm ơn bạn huuthang_bd hôm trước bạn cũng đã làm giúp mình file này có điều mình không hiểu chổ =FALSE nhờ bạn giải thích giùm. File này có rất nhiều phương án giải quyết, với trình độ của mình chỉ nghiên cứu các file do anh em làm giúp cũng đủ phê rồi.

ndu96081631
08-05-09, 09:23 AM
Cảm ơn bạn huuthang_bd hôm trước bạn cũng đã làm giúp mình file này có điều mình không hiểu chổ =FALSE nhờ bạn giải thích giùm. File này có rất nhiều phương án giải quyết, với trình độ của mình chỉ nghiên cứu các file do anh em làm giúp cũng đủ phê rồi.
Công thức:
=SUMPRODUCT(--(ISERROR(SEARCH(DG!$C$4:$C$8,SC!D5))=FALSE),DG!$D$ 4:$D$8)
Giải thích đơn giản là: Chừng nào hàm SEARCH(DG!$C$4:$C$8,SC!D5) không bị lổi thì mới tính tổng DG!$D$4:$D$8
Thế thôi!
ISERROR(SEARCH(DG!$C$4:$C$8,SC!D5))=FALSE là không bị lổi
ISERROR(SEARCH(DG!$C$4:$C$8,SC!D5))=TRUE là... có lổi (đương nhiên)

huuthang_bd
08-05-09, 09:35 AM
Cảm ơn bạn huuthang_bd hôm trước bạn cũng đã làm giúp mình file này có điều mình không hiểu chổ =FALSE nhờ bạn giải thích giùm. File này có rất nhiều phương án giải quyết, với trình độ của mình chỉ nghiên cứu các file do anh em làm giúp cũng đủ phê rồi.
Hàm ISERROR() dùng để kiểm tra các giá trị lỗi, vì vậy giá trị nào lỗi sẽ trả về False còn không lỗi thì trả về True. Nhưng cái ta đang cần là giá trị không lỗi (SEARCH() không trả về lỗi có nghĩa là chi tiết được tìm thấy trong cell tình trạng, tương đương với chi tiết đó bị hỏng) để tính tiền. =False được sử dụng với mục đích đổi ngược các giá trị True, False lại (False = False sẽ trả về True, True = False sẽ trả về False). =False tương đương với hàm NOT(). Bạn có thể thay thế ISERROR(SEARCH())=FALSE bằng NOT(ISERROR(SEARCH()))

TRA KHUC RIVER
08-05-09, 09:49 AM
[quote=ndu96081631;155675]Công thức:
=SUMPRODUCT(--(ISERROR(SEARCH(DG!$C$4:$C$8,SC!D5))=FALSE),DG!$D$ 4:$D$8)
Giải thích đơn giản là: Chừng nào hàm SEARCH(DG!$C$4:$C$8,SC!D5) không bị lổi thì mới tính tổng DG!$D$4:$D$8

Hàm SUMPRODUCT là tính tổng của tích nghĩa là sao hả anh? Nó có khác với hàm sumif không?

ndu96081631
08-05-09, 10:03 AM
Hàm SUMPRODUCT là tính tổng của tích nghĩa là sao hả anh? Nó có khác với hàm sumif không?
Ví dụ:
SUMPRODUCT((A1:A10)*(B1:B10))
Thì nó sẽ tính như sau:
- Lấy A1 nhân với B1 ---> Ra kết quả KQ1 (nhớ để đó)
- Lấy A2 nhân với B2 ---> Ra kết quả KQ2 (nhớ để đó)
...........
- Lấy A10 nhân với B10 ---> Ra kết quả KQ10 (nhớ để đó)
Cuối cùng cộng tất cả KQ1 , KQ2... KQ10 lại với nhau... thế thôi
Còn SUMIF thì bạn biết rồi... tự so sánh đi

ST-Lu!
08-05-09, 02:47 PM
Trong file của bạn có các công thức sau:
1.

=IF(ISERROR(SEARCH(F$5,$D6,1)),"","X")Công thức này dùng để đánh dấu những chi tiết bị hỏng trong một máy.
SEARCH(F$5,$D6,1) Tìm tên chi tiết (F5) trong cell tình trạng (D6).
IF(ISERROR(SEARCH(F$5,$D6,1)),"","X") Nếu tìm không thấy (SEARCH() trả về #VALUE!, ISERROR() trả về TRUE) thì bỏ trống, Nếu tìm thấy (SEARCH() trả về một số, ISERROR() trả về FALSE) thì đánh dấu "X".
2.

{=SUMPRODUCT((TRANSPOSE($F7:$J7)="X")*(DG!$D$4:$D$8))}Tính tổng thành tiền dựa vào các chi tiết hỏng được đánh dấu. Ở đây có lẽ hàm TRANSPOSE() l.

Bác ơi cái đoạn này
IF(ISERROR(SEARCH(F$5,$D6,1)),"","X")

{=SUMPRODUCT((TRANSPOSE($F7:$J7)="X")*(DG!$D$4:$D$8))}

Như vậy nếu có lỗi để rỗng, còn không lỗi đánh dấu X thì hàm Sumproduct vẫn tính được ạh?

huuthang_bd
08-05-09, 03:04 PM
Bác ơi cái đoạn này
IF(ISERROR(SEARCH(F$5,$D6,1)),"","X")

{=SUMPRODUCT((TRANSPOSE($F7:$J7)="X")*(DG!$D$4:$D$8))}

Như vậy nếu có lỗi để rỗng, còn không lỗi đánh dấu X thì hàm Sumproduct vẫn tính được ạh?
Đương nhiên là tính được rồi. Lúc này Sumproduct() hoạt động giống như hàm Sumif().