vì dữ liệu trong cột F của bạn là chuỗi nên nó báo lỗi #Value, chính vì vậy bạn nên dùng bẫy lỗi
nếu dùng 2007
=IFERROR(C10*D10*F10,"")
dùng 2003
=IF(ISERROR(C10*D10*F10),"",C10*D10*F10)
Em xin chào diễn đàn. E đang mon men tìm hiểu công thức mảng, các anh chị có thể giải thích cụ thể cho e công thức trích lọc duy nhất được không ạ (e muốn tìm hiểu bản chất của nó nhưng chưa hình dung được
Công thức của bác NDU hay dùng
Sửa công thức F10 thành:
=IF(E10<>0; VLOOKUP(E10; $B$3:$C$6;2;0); 0)
Thì cột G tự nhiên sẽ hết lỗi. Nghĩa là dữ liệu trong cùng 1 cột nên là cùng kiểu.
Phi đã viết:
vì dữ liệu trong cột F của bạn là chuỗi nên nó báo lỗi #Value, chính vì vậy bạn nên dùng bẫy lỗi
Bao giờ cũng nên sửa gốc, không nên sửa ngọn. Sửa gốc chỉ sửa 1 lần, sửa ngọn thì có bao nhiêu ngọn phải sửa hết, ngoài ra có những ngọn sau đó mới nảy sinh thêm.
Em xin chào diễn đàn. E đang mon men tìm hiểu công thức mảng, các anh chị có thể giải thích cụ thể cho e công thức trích lọc duy nhất được không ạ (e muốn tìm hiểu bản chất của nó nhưng chưa hình dung được
Công thức của bác NDU hay dùng
Hãy tìm hiểu từ trong ra ngoài:
Rows(TenNV) = 1 con số, chỉ số dòng của vùng TenNV, thí dụ 10
Indirect("1:10") = 1:10
Row(1:10) = 1 mảng 10 phần tử từ 1 đến 10 (Mảng 1)
MATCH(TenNV,TenNV,0) = vị trí đầu tiên tìm thấy của từng nhân viên trong mảng TenNV (vì Match chỉ lấy vị trí đầu tiên)
Kết quả của Match cũng là 1 mảng 10 phần tử, trong đó sẽ có những phần tử giống nhau, giá trị trong phạm vi 1-10. (Mảng 2)
Hàm If: So sánh từng phần tử của mảng 1 và mảng 2, nếu giống nhau (chỉ vị trí đầu của NV mới giống, vị trí thứ 2 trở đi không giống nữa), thì lấy vị trí đầu tiên. Nếu không giống (các vị trí thứ 2 trở đi), thì thay giá trị (Match) bằng chuỗi rỗng ""
Kết quả của hàm If sẽ là mảng 3: Chỉ gồm các số duy nhất, là vị trí đầu tiên của mỗi NV trong TenNV, các phần tử khác là giá trị rỗng
ROWS($1:1) = số dòng của vùng $1:1. Nếu fill xuống sẽ là số dòng của vùng $1:2, $1:3, ... Kết quả sau khi fill sẽ là 1, 2, 3, ... nhưng giá trị tại ô đang xét = 1
Small(Mảng 3, i) = 1 con số nhỏ thứ i trong mảng 3, là vị trí đầu tiên tìm thấy của NV thứ i.
Index(TenNV, vị trí) = .... (không biết, ai biết chỉ dùm)
Chào bạn dhn46,
Để tìm hiểu cách trích lọc duy nhất dùng công thức mảng, đầu tiên bạn cần tìm hiểu từng thành phần của công thức trên.
Giả sử TenNV là vùng A1:A7, gồm 3 cái tên lặp lại trong 7 dòng:
Nguyen Van A
Tran Thi B
Tran Thi B
Nguyen Van A
Le Van C
Nguyen Van A
Le Van C
Mục đích chúng ta là trích xuất tại C1,C2 và C3:
Nguyen Van A
Tran Thi B
Le Van C
Có nhiều công thức tính, công thức của bạn là 1 trong nhiều cách:
Trong đó, thành phần chính là hàm MATCH(TenNV,TenNV,0)
Theo cấu trúc của hàm MATCH, ta dịch ra là: tìm vị trí chính xác của các phần tử có trong TenNV trong tập hợp TenNV, trả về kết quả là vị trí trong mảng.
Mảng TenNV có 7 phần tử nên sẽ trả về 7 giá trị vị trí.
Dùng F9 để xem kết quả: Bôi đen phần hàm MATCH, nhấn F9, bạn sẽ thấy kết quả như sau: {1;2;2;1;5;1;5}
Vì đặc tính của hàm MATCH là luôn trả về vị trí của giá trị đầu tiên tìm thấy trong mảng, do đó Trong TenNV, Nguyen Van A nằm ở vị trí 1,4,6 sẽ trả về giá trị 1 nằm ở vị trí 1,4,6 tương ứng.
Quan sát mảng kết quả, dễ dàng nhận thấy 3 giá trị tên duy nhất xuất hiện đầu tiên tại 3 vị trí 1,2 và 5.
Đây chính là tham số vị trí trong hàm INDEX đễ truy xuất ra giá trị trong TenNV
C1=INDEX(TenNV,1) = Nguyen Van A
C2=INDEX(TenNV,2) = Tran Thi B
C3=INDEX(TenNV,5) = Le Van C
Đến đây phát sinh ra yêu cầu: dùng cách nào để lấy giá trị 1,2,5 trong mảng kết quả tương ứng với ô C1,C2,C3?
Hàm ROW: Ta thường dùng để tạo 1 mảng bao gồm n số liên tục
ROW(1:7) = {1;2;3;4;5;6;7}
Tổng quát hơn: tương ứng với số phần tử của TenNV
ROW(INDIRECT("1:"&ROWS(TenNV)))= {1;2;3;4;5;6;7} (Dùng F9 để xem)
Đặt 2 mảng cạnh nhau để so sánh 1 cách trực quan:
{1;2;2;1;5;1;5} = MATCH(TenNV,TenNV,0)
{1;2;3;4;5;6;7} = ROW(INDIRECT("1:"&ROWS(TenNV))) Dể dàng nhận ra các giá trị cần lấy trùng nhau :
Dùng IF(MATCH(TenNV,TenNV,0)=ROW(INDIRECT("1:"&ROWS(TenNV))),MATCH(TenNV,TenNV,0),"")
= {1;2;"";"";5;"";""} (Dùng F9 để xem)
Dùng hàm SMALL để lần lượt lấy các giá trị trong mảng:
SMALL(IF(MATCH(TenNV,TenNV,0)=ROW(INDIRECT("1:"&ROWS(TenNV))),MATCH(TenNV,TenNV,0),""),ROWS($1:1))
sẽ có KQ tại C1 = 1 (tương ứng với ROWS($1:1)=1)
C2 = 2 (tương ứng với ROWS($1:2)=2)
C3 = 5 (tương ứng với ROWS($1:3)=3)
Xin cho em hỏi, em đang thử sử dụng hàm index và match để tìm và lấy dữ lệu nhưng không ra được kết quả, vấn đề cụ thể như file đính kèm ( View attachment GP-EXCEL.xls ) em sử dụng mã để truy tìm, công thức sử dụng là
=INDEX(THDT!A2:J5;MATCH(LAM!A2;THDT!A2:A5;0);2)
Em đã chuyển mã truy xuất sang định dạng text nhưng vẫn không được, nhờ anh, em, cô, chú, cậu, dì giúp đỡ. Cảm ơn nhều ạ.
Xin cho em hỏi, em đang thử sử dụng hàm index và match để tìm và lấy dữ lệu nhưng không ra được kết quả, vấn đề cụ thể như file đính kèm ( View attachment 69465 ) em sử dụng mã để truy tìm, công thức sử dụng là
=INDEX(THDT!A2:J5;MATCH(LAM!A2;THDT!A2:A5;0);2)
Em đã chuyển mã truy xuất sang định dạng text nhưng vẫn không được, nhờ anh, em, cô, chú, cậu, dì giúp đỡ. Cảm ơn nhều ạ.
Tình hình là hôm qua em post bài này :
Hi all !
Em có một chút rắc rối với file báo cáo nhờ anh chị có ai biết giải thích giùm em.
Không hiểu sao kết quả ở cột AE vẫn còn một số lẻ rất nhỏ, nếu em paste value giá trị ở cột AC thì AE sẽ không còn nữa.
Em đã kiểm tra rất kỹ các phần tử trong Sum ở AC nhưng vẫn không thấy chỗ nào bị dư như thế
Anhchị giúp em với !
Đang làm báo cáo gấp quá mà nếu cứ paste value kiểu này thì chỉ có nước mà về vườn quá
Cảm ơn mọi người nha !
Nhưng lần đầu attach file bị lỗi, chưa kịp chỉnh thì đã bị move
Giờ vào em mới biết
Em attach file đây ạh , mọi người giúp em với.
Tình hình là hôm qua em post bài này :
Hi all !
Em có một chút rắc rối với file báo cáo nhờ anh chị có ai biết giải thích giùm em.
Không hiểu sao kết quả ở cột AE vẫn còn một số lẻ rất nhỏ, nếu em paste value giá trị ở cột AC thì AE sẽ không còn nữa.
Em đã kiểm tra rất kỹ các phần tử trong Sum ở AC nhưng vẫn không thấy chỗ nào bị dư như thế
Anhchị giúp em với !
Đang làm báo cáo gấp quá mà nếu cứ paste value kiểu này thì chỉ có nước mà về vườn quá
Cảm ơn mọi người nha !
Nhưng lần đầu attach file bị lỗi, chưa kịp chỉnh thì đã bị move
Giờ vào em mới biết
Em attach file đây ạh , mọi người giúp em với.
Có thể do tính toán trong excel vẫn có sai số mà bạn, do giới hạn của giá trị các kiểu dữ liệu. Bạn làm thế này nhé: Đóng ngoặc phần cộng từ T4 đến hết công thức. Công thức sẽ như sau:
=SUM(L4:O4)+(T4-AC4-AF4-AG4-AH4).
Chào BQT và các thành viên trong diễn đàn. Tôi có một nhu cầu cho công việc như trong File đính kèm, mọi người xem và cho ý kiến có thể dùng hàm được không, nếu được thì dùng hàm gì.Cảm ơn mọi người
Theo dữ liệu trong file đính kèm thì mình muốn thống kê tất cả nhân viên trong tháng 08/2011 đã xuất được bao nhiêu hóa đơn (Ngày xuất hd ở cột D, tính tổng ở cột Q).
Mình có làm công thức trong sheet 2 nhưng kết quả ko chính xác.