Tạo các công thức để đếm và tính tổng

Liên hệ QC
Status
Không mở trả lời sau này.

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,440
Nghề nghiệp
Bác sĩ
Tạo các công thức để đếm & tính tổng

--------------------------------------------------------------------------------

A/ Các công thức đếm cơ bản :

Ta có mảng dữ liệu A1:B10 có tên là Data. Mảng này sẽ có những ô trống, những ô chứa giá trị Text, số, những ô lỗi #N/A, #DIV/0, #NAME?, #NULL!, #VALUE!, #REF!. Ta lần lượt thực hiện các công thức đếm sau :

1/ Đếm tổng số ô :
Số ô có trong mảng dữ liệu Data A1:B10 là :
=ROWS(Data)*COLUMNS(Data)
2/Đếm các ô trống :
=COUNTBLANK(Data)
Hàm COUNTBLANK cũng đếm các ô chứa một công thức vốn trả về một chuỗi rỗng. TD : Công thức sau sẽ trả về một chuỗi rỗng nếu giá trị trong ô A1 lớn hơn 5. Nếu ô A1 đáp ứng điều kiện này, hàm COUNTBLANK sẽ đếm ô đó
=IF(A1>5,"",A1)
Bạn cũng có thể đếm số ô trống trong cột A bằng công thức sau :
=COUNTBLANK(A:A)
Và số ô trống trên tòan bộ Sheet1 :
=COUNTBLANK(Sheet1!1:65536)
Dĩ nhiên, bạn phải nhập công thức trên một Sheet khác ngọai trừ Sheet1, nếu không nó sẽ tạo ra tham chiếu vòng
Lưu ý : Hàm COUNTBLANK sẽ không đếm các ô chứa giá trị 0, ngay cả bạn hủy tùy chọn Zero Value trong Tools/Option
3/Đếm các ô không trống :
=COUNTA(Data)
Hàm COUNTA đếm các giá trị Text hoặc các giá trị Logic (TRUE hoặc FALSE). Nếu một ô chứa công thức trả kết quả về một chuỗi rỗng, hàm COUNTA cũng đếm luôn ô này
4/Đếm các ô số :
=COUNT(Data)
Các ô chứa giá trị logic (TRUE hay FALSE) không được xem là ô số. Hàm COUNT cũng đếm các ô chứa giá trị thời gian hay ngày tháng
5/Đếm các ô không phải Text :
{=SUM(IF(ISNONTEXT(Data),1))}
6/Đếm các ô Text :
{=SUM(IF(ISTEXT(Data),1))}
7/Đếm các giá trị Logic :
{=SUM(IF(ISLOGIC(Data),1))}
Nếu muốn biết các công thức mảng trên họat động ra sao, các bạn có thể tham khảo thêm ở bài "Mảng và công thức mảng".
8/Đếm các giá trị lỗi trong một dãy :
Excel có 3 hàm để giúp bạn quyết định xem ô có chứa giá trị lỗi hay không :
- ISERROR : Trả về TRUE nếu ô chứa bất kỳ giá trị lỗi (#N/A, #VALUE, #REF!, #DIV/0!, #NUM!, #NAME?, hoặc #NULL!)
-ISERR : Trả về TRUE nếu ô chứa bất kỳ giá trị lỗi ngọai trừ #N/A
-ISNA : Trả về TRUE nếu ô chứa giá trị lỗi #N/A. Bạn có thể sử dụng các hàm này trong công thức mảng để đếm giá trị lỗi trong một dãy, tùy nhu cầu của bạn
{=SUM(IF(ISERROR(Data),1))}
{=SUM(IF(ISERR(Data),1))}
{=SUM(IF(ISNA(Data),1))}
Nếu bạn muốn đếm cụ thể các lỗi, bạn có thể sử dụng hàm COUNTIF
=COUNTIF(Data,"#DIV/0!")
Trên đây là một số thí dụ về các công thức đếm cơ bản, lần sau, chúng ta sẽ phối hợp các hàm, các công thức mảng để thực hiện các công thức đếm và tính tổng nâng cao.
 
Một số ví dụ về các công thức sử dụng hàm COUNTIF

--------------------------------------------------------------------------------

- Số ô chứa giá trị 12 : =COUNTIF(Data,12)

-Số ô chứa giá trị lớn hơn 12 : =COUNTIF(Data,">12")

-Số ô chứa giá trị khác 0 : =COUNTIF(Data,"<>0")

-Số ô chứa giá trị âm : =COUNTIF(Data,"<0")

-Số ô chưa giá trị bằng nội dung của một ô nào đó, (TD B1)
=COUNTIF(Data,B1)

-Số ô chưa giá trị lớn hơn ô B1 : =COUNTIF(Data,">"&B1)

-Số ô chứa Text : =COUNTIF(Data,"*")

-Số ô Text chứa chính xác 3 ký tự : =COUNTIF(Data,"???")

-Số ô chứa Text bắt đầu bằng chữ A : =COUNTIF(Data,"A*")

-Số ô chứa từ đơn nào đó Td : "Dung" =COUNTIF(Data,"Dung")

-Số ô chứa Text Dung ở bất cứ nơi nào trong Text :
=COUNTIF(Data,"*Dung*")

-Số ô chứa ngày tháng hiện hành :
=COUNTIF(Data,TODAY())

-Số ô có giá trị lớn hơn giá trị trung bình :
=COUNTIF(Data,">"&AVERAGE(Data))

-Số ô chứa giá trị lớn hơn 3 hoặc nhỏ hơn 2 :
=COUNTIF(Data,">3")+COUNTIF(Data,"<2")

-Số ô chứa giá trị Logic (TRUE hoặc FALSE) :
=COUNTIF(Data,TRUE)+COUNTIF(Data,FALSE)

-Số ô chứa giá trị lỗi #N/A : =COUNTIF(Data,"#N/A")
 
Ở phần trên, chúng ta đã tìm hiểu sơ qua một số thí dụ dùng hàm COUNTIF để đếm một số trường hợp. Hôm nay, chúng ta khai thác kỹ hơn qua các hàm kết hợp cùng với công thức mảng.

1/Đếm các ô chứa nội dung Text :

Để thuận tiện, tôi gọi mảng dữ liệu cần đếm là Data, và tôi muốn đếm các ô chứa chuỗi "DD". Đơn giản nhất, ai cũng biết là hàm COUNTIF : =COUNTIF(Data,"DD")
Công thức mảng sau cho kết quả giống hàm COUNTIF là :

{=SUM((Data="DD")*1)} hay {=SUM(IF(Data="DD",1))}

Nhưng công thức này không nhạy kiểu chữ, có nghĩa là "DD" hay "Dd" hay "dd" gì, nó cũng đếm hết. Nếu ta muốn đếm chính xác, chỉ những chuỗi "DD" mới tính, ta phải dùng hàm EXACT.

{=SUM(IF(EXACT(Data,"DD"),1))}

Hàm EXACT khi dùng trong công thức mảng, nó sẽ cho một mảng mới sau khi duyệt xong mảng Data gồm các phần tử TRUE và False, tương ứng với các ô trong mảng Data có chứa "DD" hay không, và khi kết hợp với hàm IF, nó tiếp tục tạo mảng gồm các phần tử 1, 0 tương ứng với TRUE và False. Nếu là TRUE (ứng với ô có chứa chuỗi "DD") sẽ cho kết quả là 1, và hàm SUM sẽ cho tổng số các ô chứa chuỗi "DD" có trong mảng

2/Đếm các ô có chứa "DD" trong chuỗi :

Một ô chứa Text trong đó có chứa chuỗi "DD" sẽ gồm cả có thêm những từ khác đứng phía trước và phía sau. Khi đó, để đếm các ô này, ở trên, ta dùng công thức :

=COUNTIF(Data,"*DD*") Nếu không muốn đếm các ô có chứa những từ có phía sau "DD" thì ta bỏ dấu * đằng sau đi.

Hay : =COUNTIF(Data,"*"&"DD"&"*")

Cũng giống như trên, việc đếm này không nhạy kiểu chữ. Nếu muốn đếm chính xác, ta phải dùng công thức mảng sau :

{=SUM(IF(LEN(Data)-LEN(SUBSTITUTE(Data,"DD",""))>0,1))}

Hàm SUBSTITUTE trong công thức mảng trên sẽ thay thế chuỗi "DD" trong mảng thành chuỗi rỗng. Ta có thể hiểu trong công thức mảng này, hàm LEN(Data) sẽ tính chiều dài của các chuỗi có trong từng ô của mảng. Hàm LEN(SUBSTITUTE(Data,"DD","")) sẽ cho kết quả là chiều dài các chuỗi không bao gồm chuỗi "DD" của từng ô trong mảng. Khi kết hợp cùng hàm IF trong công thức mảng , nó sẽ tạo một mảng mới gồm các phần tử 1, 0 tương ứng với hiệu số của hai hàm LEN ở trên (nếu >0, bao gồm ô đó có chứa chuỗi "DD").
Chgúng ta sẽ tiếp tục vấn đề này vào dịp khác nhé. Chúc các bạn rút được nhiều ý tưởng hơn trong công việc hàng ngày từ những bài trao đổi trên
 
3/ Đếm tổng số lần xuất hiện của một chuỗi trong một dãy :

Để đếm tổng số lần xuất hiện của một chuỗi (td : DD) trong một dãy ô, ta sử dụng công thức mảng sau đây :
{=(SUM(LEN(Data))-SUM(LEN(SUBSTITUTE(Data,"DD",""))))/LEN("DD")}
Những hàm trên đã được giới thiệu ở phần trước. Trong công thức mảng,ta có thể tóm tắt như sau :
SUM(LEN(Data)) : Cho biết chiều dài của tất cả các chuỗi ký tự có trong mảng
SUM(LEN(SUBSTITUTE(Data,"DD","") : Cho biết chiều dài của các ký tự còn lại trong mảng không phải là chuỗi "DD"
Hiệu số này dĩ nhiên cho ta kết quả là tổng số chiều dài của tất cả các chuỗi "DD" có trong mảng.
Và như vậy, khi ta chia tổng số chiều dài của tất cả các chuỗi "DD" có trong mảng cho chính độ dài của chuỗi "DD", ta sẽ có số lần chuỗi "DD" xuất hiện trong mảng
Công thức này nhạy kiểu chữ. Nếu ta muốn công thức trên không nhạy kiểu chữ hoa, thường, ta có thể chỉnh sửa như sau : Ta dùng kết hợp thêm hàm UPPER và hàm LOWER để đổi tất cả các chữ có trong mảng thành một kiểu đồng nhất với nhau
{=(SUM(LEN(Data))-SUM(LEN(SUBSTITUTE(UPPER(Data),UPPER("DD"),""))))/LEN("DD")}
Hay :
{=(SUM(LEN(Data))-SUM(LEN(SUBSTITUTE(LOWER(Data),LOWER("DD"),""))))/LEN("DD")}

4/ Đếm mục thường xuất hiện nhiều nhất :

- Nếu là các ô chứa số hạng : ta có thể dùng hàm MODE, kết quả của hàm này sẽ cho ta biết số hạng nào là số hạng thường xuyên xuất hiện trong dãy nhiều nhất.
Td : Dãy Data từ A1:A10 có lần lượt các số hạng sau : {1,4,4,10,10,10,10,12,14,14}
Nhập công thức : =MODE(Data) sẽ cho kết quả là 10, vì số 10 xuất hiện 4 lần trong dãy.
Kết hợp : =COUNTIF(Data,MODE(Data)) sẽ đếm trong mảng Data, số lần xuất hiện của số 10 (do kết quả trả về của hàm MODE)

-Nếu các ô chứa Text lẫn các giá trị :

Khi đó, bạn nên sử dụng công thức mảng, đây là công thức mảng cho cùng kết quả với hàm COUNTIF trên :

{=MAX(COUNTIF(Data,Data))}
 
5/Đếm các ô bằng cách sử dụng niều tiêu chuẩn (Criteria) :

- Sử dụng tiêu chuẩn AND :

Một tiêu chuẩn AND đếm các ô nếu tất cả các điều kiện xác định được thỏa. Td : Đếm các ô chứa các giá trị >4 và nhỏ hơn 12 trong dãy có tên là Data. Ta sử dụng hàm COUNTIF
=COUNTIF(Data,">4")-COUNTIF(Data,">12").
Công thức trên cho ta cảm giác khó chịu vì ta muốn đếm các ô có chứa giá trị trong khỏang 4 đến 12, ta lại phải làm phép tính hiệu số giữa các ô có giá trị lớn hơn 12 và các ô có giá trị lớn hơn 4.
Nếu sử dụng công thức mảng, ta sẽ thấy rõ hơn sự tiện lợi của nó :
{=SUM((Data>4)*(Data<=12))}
Đôi khi, tiêu chuẩn đếm được dựa vào nhiều điều kiện ở các ô khác nhau, ngọai trừ các ô đang được đếm.
Td : Mảng có tên là MatHang, điều kiện MatHang = "M92"
Mảng có tên là TenNCC, điều kiện là "AA"
Mảng có tên là SoLuong, điều kiện là SoLuong >1000
Ta sẽ đếm số lần mua của NCC là AA,mặt hàng Xăng M92 có số lượng lớn hơn 1000 lít
{=SUM((Mathang="M92")*(TenNCC="AA")*(SoLuong>1000) )}
Hay :
{=SUM(IF(Mathang="M92",IF(TenNCC="AA",IF(SoLuong>1 000,1))))}
Bạn cũng có thể tránh dùng công thức mảng trên bằng cách dùng hàm SUMPRODUCT
=SUMPRODUCT((Mathang="M92")*(TenNCC="AA")*(SoLuong >1000))

- Sử dụng tiêu chuẩn OR :

Để đếm các ô bằng cách sử dụng một tiêu chuẩn OR, đôi khi bạn có thể sử dụng nhiều hàm COUNTIF. TD : Công thức sau đây đếm các số 1,3,5 trong dãy có tên là Data :
=COUNTIF(Data,1)+COUNTIF(Data,3)+COUNTIF(Data,5)
Bạn cũng có thể dùng hàm COUNTIF trong công thức mảng :
{=SUM(COUNTIF(Data,{1,3,5}))}
Nhưng nếu bạn muốn đếm các ô dựa vào tiêu chuẩn của các ô khác ngọai trừ các ô đang được đếm, hàm COUNTIF sẽ không thực hiện được. Như ví dụ trên, giả sử ta muốn đếm số lần mua hoặc mặt hàng là M92, hoặc của nhà CC là AA, hoặc những mặt hàng có số lượng lớn hơn 1000 lít. Ta phải sử dụng công thức mảng như sau :
{=SUM((MatHang="M92")+(TenNCC="AA")+(SoLuong>1000) )}
Hay :
{=SUM(IF((MatHang="M92")+(TenNCC="AA")+(SoLuong>10 00),1))}
Hay :
=SUMPRODUCT((MatHang="M92")+(TenNCC="AA")+(SoLuong >1000))

-Kết hợp tiêu chuẩn AND và OR :

Trong một số trường hợp, bạn cần kết hợp một số tiêu chuẩn AND và OR. Td : Cũng trường hợp trên, giả sử bạn muốn đếm số lần mua hoặc mặt hàng M92, hoặc mặt hàng M90, của nhà CC AA hoặc BB, và số ưuợng lớn hơn 1000 lít. Ta sẽ sử dụng công thức mảng như sau :

{=SUM(((MatHang="M92)+(MatHang="M90"))*((TenNCC="A A")+(TenNCC="BB"))*(SoLuong>1000))}

Trên đây là các công thức dùng để đếm các ô kết hợp nhiều tiêu chuẩn với nhau. Nếu bạn đã nắm vững vấn đề này, thì việc tính tổng các số hạng thỏa mãn nhiều điều kiện sẽ trở nên dễ dàng và nhẹ nhàng rất nhiều. Chúc các bạn thành công
 
Các công thức để tính tổng

--------------------------------------------------------------------------------

Phần trên, chúng ta đã đề cập về vấn đề tạo ra các công thức để đếm, bây giờ, chúng ta sẽ phát triển thêm các công thức dùng để tính tổng. Về nguyên tắc cơ bản, chúng không khác nhau là mấy, một số công thức chỉ cần thay COUNT (để đếm) bằng SUM (tính tổng) là được. Bạn hãy cùng tôi điểm qua các trường hợp ấy nhé.

1/ Tính tổng các ô trong một dãy : Giả sử dãy có tên là Data
=SUM(Data)

Bạn cũng có thể sử dụng cột hay hàng để làm đối số cho hàm SUM.

Td : = SUM(A:A) Hay = SUM(Sheet1!1:65536)

Để tránh tham chiếu vòng, công thức này không được xuất hiện trên Sheet1

Hàm SUM có thể lấy đến 30 đối số. Công thức sau đây sẽ trả về tổng của 5 dãy không nằm kề nhau :

=SUM(A1:A9, C1:C9, G1:G9, I1:I9, S1:S9)

Hàm SUM rất đa năng, các đối số của nó có thể là các giá trị số, ô, dãy, biểu diễn Text của các số (vốn được thông dịch là các giá trị), các giá trị logic và ngay cả các hàm được nhúng. TD :

=SUM(B1,5,"6",,SQRT(4),A1:A5,TRUE)

Công thức này vốn là một công thức hòan tòan hợp lệ, chứa tất cả lọai đối số sau đây, được liệt kê ở đây theo thứ tự được biểu diễn :
- Một tham chiếu ô
-Một giá trị thực hiện
-Một chuỗi trông giống như một giá trị
-Một đối số bị thiếu
-Một biểu thức vốn sử dụng một hàm khác
- Một tham chiếu dãy
-Một giá trị logic TRUE
 
2/ Tính tổng tích lũy :

Nếu bạn muốn tại cột C hiển thị tổng tích lũy của các giá trị trong một dãy của cột B (B2:Bx), bạn hãy đặt công thức sau tại Cell C2 :

=SUM(B$2:B2)

Khi sao chép công thức xuống phía dưới, thí dụ tại Cell C8, công thức sẽ là :

=SUM(B$2:B8)

Đối số của hàm SUM luôn bắt đầu từ hàng 2 đến hàng hiện hành. Để cho công thức không bị lỗi đối với các hàng trống không nhập dữ liệu vào, bạn có thể sử dụng thêm hàng IF :

=IF(B2<>"",SUM(B$2:B2),"")

3/Tính tổng một dãy có chứa các lỗi:

4/Tính tổng 3 giá trị nhỏ nhất trong một dãy :

5/Tính tổng 3 giá trị lớn nhất trong một dãy :

6/Tính tổng n giá trị lớn nhất trong một dãy :

Từ mục 3 đến mục 6, các bạn xem tại :

http://www.giaiphapexcel.com/forum/showthread.php?p=53#post53

7/Tính tổng của N số hạng thấp nhất trong dãy Data

{=SUM(SMALL(Data,ROW(INDIRECT("1:N"))))}

8/Tổng những số hạng ở những hàng cách nhau :

{=SUM((Data)*(MOD(ROW(Data)-ROW(A1);2)=0))}

9/Tổng những số chẵn trong dãy :

{=SUM(IF(MOD(Data;2)=0;Data;0))}

10/ Tổng những số lẻ trong dãy :

{=SUM(IF(MOD(Data;2)<>0;Data;0))}

11/Tổng những số hạng ở những hàng thứ 5, 10, 15 của dãy :

{=SUM((Data)*(MOD(ROW(data)-ROW(A1);5)=0))}

12/Tổng mỗi giá trị thứ n trong một dãy :

{=SUM((Data)*(MOD(ROW(data)-ROW(A1);n)=0))}

{=SUM(IF(MOD(ROW(INDIRECT("1:"&COUNT(Data)))-1,n)=0,Data,""))}

13/Tổng các giá trị được làm tròn :

Khi các ô trong một dãy được làm tròn 2 chữ số chẳng hạn, bạn thường thấy ô TC thể hiện một số không chính xác, do các giá trị thật khi được cộng vẫn là những con số thập phân với cả hàng chục chữ số bổ sung sau dấu phẩy. Do đó, hoặc bạn phải dùng hàm ROUND cho mỗi ô được cộng, hoặc bạn phải dùng công thức mảng cho ô TC như sau :

{=SUM(ROUND(B4:B10,2))}

9/ Tổng có điều kiện dựa vào một tiêu chuẩn :

Thường sử dụng là hàm SUMIF.

-Tổng các giá trị âm : Td: Tổng các giá trị âm trong dãy Data

=SUMIF(Data,"<0")

- Tổng các giá trị dựa vào một dãy khác : Td : Tổng số lượng các mặt hàng có mã là AA

=SUMIF(MaMH,"AA",SoLuong)
 
Lần chỉnh sửa cuối:
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom