Hỏi nhanh - đáp nhanh về công thức (phần 1)

Liên hệ QC
Status
Không mở trả lời sau này.
thêm 1 cách tính hơi kì cục, mình suy nghĩ hoài chẳng ra cái hàm ( 1 phát ăn ngay) nào cho phù hợp cả,
Tính giá trị Trung bình dựa theo điều kiện.
 

File đính kèm

  • KHOQUA.xls
    24.5 KB · Đọc: 17
thêm 1 cách tính hơi kì cục, mình suy nghĩ hoài chẳng ra cái hàm ( 1 phát ăn ngay) nào cho phù hợp cả,
Tính giá trị Trung bình dựa theo điều kiện.
Dùng cái này tại cột C nhé:
Mã:
=SUMPRODUCT(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53),C$15:C$51)/SUMPRODUCT(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53))
 
Dùng cái này tại cột C nhé:
Mã:
=SUMPRODUCT(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53),C$15:C$51)/SUMPRODUCT(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53))

chính xác, hay thật, mình mới làm quen với excel và viết hàm theo các bài hướng dẫn nên ko biết các "biến hóa" này, đúng là hay. hehe mê rồi -\\/.
 
Dùng cái này tại cột C nhé:
Mã:
=SUMPRODUCT(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53),C$15:C$51)/SUMPRODUCT(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53))
Chỉ cần ngắn thế này thôi:
PHP:
=AVERAGE(IF(($B$15:$B$51>=$B$53)*($B$15:$B$51<=$D$53),C$15:C$51,""))
Kết thúc công thức bằng tổ hợp phím Ctrl + Shift + Enter
 
Góp vui thêm công thức nữa nếu sài 2007 thì có công thức AverageIfs
=AVERAGEIFS($C$15:$C$51,$B$15:$B$51,">="&$B$53,$B$15:$B$51,"<="&$D$53)
 
Xử lý lỗi #value

Kính gửi: ACE


Mong các Anh/Chị hướng dẫn về việc bỏ lỗi #value trong file đính kèm

Cảm ơn các Anh/Chị nhiều
 

File đính kèm

  • check.xls
    21 KB · Đọc: 8
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
Mã:
=INDEX(TenNV,SMALL(IF(MATCH(TenNV,TenNV,0)=ROW(INDIRECT("1:"&ROWS(TenNV))),MATCH(TenNV,TenNV,0),""),ROWS($1:1)))
 
Lần chỉnh sửa cuối:
Kính gửi: ACE


Mong các Anh/Chị hướng dẫn về việc bỏ lỗi #value trong file đính kèm

Cảm ơn các Anh/Chị nhiều
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
Mã:
=INDEX(TenNV,SMALL(IF(MATCH(TenNV,TenNV,0)=ROW(INDIRECT("1:"&ROWS(TenNV))),MATCH(TenNV,TenNV,0),""),ROWS($1:1)))

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)
 
Lần chỉnh sửa cuối:
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:
Mã:
=INDEX(TenNV,SMALL(IF(MATCH(TenNV,TenNV,0)=ROW(INDIRECT("1:"&ROWS(TenNV))),MATCH(TenNV,TenNV,0),""),ROWS($1:1)))

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)

Dùng INDEX ta sẽ có kết quả cuối cùng.
 

File đính kèm

  • GPE.xls
    23.5 KB · Đọc: 14
Hay quá. Công thức mảng hay thật. Bây giờ thì em ("cháu" - chú PTM) đã hiểu. Cảm ơn chú, anh rất nhiề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 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 ạ.
Công thức của bạn:
Mã:
=INDEX(THDT!A2:J5,MATCH(LAM!A3,THDT!A2:A5,0),0)
sửa lại như sau, sửa tham số 0 thành 2, cố định địa chỉ lại để copy xuống được chính xác:
Mã:
=INDEX(THDT!$A$2:$J$5,MATCH(LAM!A3,THDT!$A$2:$A$5,0),2)
 
Giúp em một chút về công thức sum !

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.
 

File đính kèm

  • Book2.rar
    33.9 KB · Đọc: 20
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ông thức tại cell AC4 của bạn đang là:
PHP:
=W4+X4+Y4+Z4+AB4+V4
Sao không sửa thành:
PHP:
=SUM(V4:Z4,AB4)
 
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).
 
Dùng hàm gì

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
 

File đính kèm

  • vi du.xls
    29 KB · Đọc: 11
Dùng công thức lằng ngoằng này tại G2 nhé:
Mã:
=OFFSET(Data!$C$1,,MATCH(1E+102,INDIRECT("Data!C"&MATCH($C2,Data!$C$1:$C$19,0)&":M"&MATCH($C2,Data!$C$1:$C$19,0)),1)-1)
 

File đính kèm

  • vi%20du(2).xls
    28.5 KB · Đọc: 14
Giúp đỡ về công thức SUMIFS

Chào các bạn,

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.

Mọi người chỉnh lại giúp nhé

Thanks 4 all.
 

File đính kèm

  • Book4.xls
    85 KB · Đọc: 10
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom