
📝 Giới thiệu
Trong quá trình xử lý và phân tích dữ liệu, đặc biệt là với các bảng có cấu trúc như cơ sở dữ liệu, Excel cung cấp một nhóm hàm vô cùng mạnh mẽ mang tên DATABASE functions. Nhóm hàm này cho phép bạn lọc và tính toán dữ liệu có điều kiện dựa trên các tiêu chí cụ thể, giúp tiết kiệm thời gian và giảm thiểu sai sót khi làm việc với các bảng dữ liệu lớn. Từ việc tính tổng, đếm số dòng, đến tính giá trị trung bình theo điều kiện – các hàm như DSUM, DCOUNT, DAVERAGE, v.v. đều mang đến khả năng linh hoạt và chính xác trong phân tích. Trong bài viết này, chúng ta sẽ cùng khám phá cách sử dụng hiệu quả nhóm hàm DATABASE để nâng cao kỹ năng làm việc với dữ liệu trong Excel.
📊 Ví dụ minh họa đơn giản
Giả sử bạn có bảng dữ liệu về doanh số bán hàng như sau:
Và bạn muốn tính tổng doanh số của khu vực Bắc, bạn có thể dùng công thức:
Và đây là kết quả trả về:
Bạn có thể thực hành nhanh công thức trên ở Sheet Vi_Du_01 dưới đây
Có thể bạn đang tự hỏi: "Tại sao không dùng SUMIF hay SUMIFS cho bài toán này?"
Đó là câu hỏi hoàn toàn hợp lý — nhưng đừng vội kết luận! Ở những ví dụ tiếp theo, bạn sẽ thấy vì sao nhóm hàm DATABASE như DSUM lại thực sự vượt trội trong những tình huống phức tạp, nơi mà SUMIF hay SUMIFS bắt đầu bộc lộ hạn chế. Hãy cùng khám phá để hiểu rõ sức mạnh ẩn sau những hàm tưởng chừng ít được chú ý này!
1. Giới thiệu nhóm hàm DATABASE trong Excel
Nhóm hàm DATABASE trong Excel bao gồm một loạt các hàm cho phép bạn lấy thông tin có điều kiện từ một bảng dữ liệu có cấu trúc giống như một cơ sở dữ liệu. Các hàm phổ biến gồm:
Hàm | Kết quả trả về |
---|---|
DSUM | Tổng các giá trị số ở cột được chỉ định, thỏa mãn điều kiện lọc |
DCOUNT | Số lượng ô chứa giá trị số (không phải văn bản) thỏa mãn điều kiện |
DCOUNTA | Số lượng ô không trống (gồm cả số, chữ, lỗi...) thỏa mãn điều kiện |
DAVERAGE | Trung bình cộng các giá trị số thỏa điều kiện |
DMAX | Giá trị lớn nhất trong cột được chọn, sau khi lọc theo điều kiện |
DMIN | Giá trị nhỏ nhất trong cột được chọn, sau khi lọc theo điều kiện |
DGET | Trả về một giá trị duy nhất nếu chỉ có một dòng dữ liệu thỏa điều kiện |
DSTDEV | Độ lệch chuẩn mẫu (sample) của các giá trị thỏa điều kiện |
DSTDEVP | Độ lệch chuẩn tổng thể (population) |
DVAR | Phương sai mẫu của các giá trị số |
DVARP | Phương sai tổng thể của các giá trị số |
📌 Lưu ý:
- Vùng criteria có thể chứa nhiều dòng để áp dụng OR logic, và nhiều cột để áp dụng AND logic.
- Các hàm này cực kỳ mạnh khi làm việc với bảng dữ liệu có nhiều tiêu chí lọc phức tạp, điều mà các hàm như SUMIFS, AVERAGEIFS khó làm trực tiếp.
Tóm gọn lại các hàm trong nhóm hàm DATABASE sẽ có chung 1 cú pháp, chỉ khác nhau duy nhất ở kết quả trả về.
=HÀM(database, field, criteria)
Trong đó HÀM là một trong các hàm thuộc nhóm DATABASE như:
DSUM, DCOUNT, DCOUNTA, DAVERAGE, DMAX, DMIN, DGET, DSTDEV, DVAR, v.v.
📌 Giải thích tham số đầu vào:
Tham số đầu vào | Giải thích chi tiết |
---|---|
database | Vùng bảng dữ liệu đầy đủ, bao gồm các tiêu đề cột ở hàng đầu tiên. |
field | Tên cột hoặc vị trí cột bạn muốn thao tác (cộng, đếm, tính trung bình…). Có thể nhập theo 1 trong 3 cách: - Tên cột trong dấu ngoặc kép, ví dụ: "Doanh số" - Ô tham chiếu đến tiêu đề, ví dụ: C1 - Hoặc số thứ tự cột (tính từ trái sang), ví dụ: 3 nếu là cột thứ ba. |
criteria | Vùng điều kiện lọc, bao gồm: - Hàng đầu tiên là tiêu đề cột (phải khớp với tiêu đề trong database) - Các dòng bên dưới là giá trị điều kiện. Ví dụ: F1:G2, trong đó F1:G1 chứa tiêu đề cột như "Khu vực", "Tháng", còn dòng F2:G2 là điều kiện. Vùng này cho phép kết hợp điều kiện AND (cùng hàng) và OR (khác hàng). |
2. Bài toán điều kiện HOẶC (OR)
Giả sử ta có 1 bài toán có điều kiện hoặc như hình dưới đây:
Yêu cầu: Tính tổng doanh số của sản phẩm A ở khu vực North hoặc người bán là John
Bạn có thể nghĩ rằng hàm SUMIFS trong Excel là “đa năng” khi xử lý điều kiện — và điều này đúng với điều kiện AND (tức là tất cả điều kiện cùng đúng). Nhưng thực tế, SUMIFS không hỗ trợ trực tiếp điều kiện OR (chỉ cần một trong các điều kiện đúng).
Có lẽ đến đây sẽ có người phản biện: “Không đúng, tôi vẫn dùng SUMIFS với OR mà!”
Vậy thì hãy cùng chứng minh điều này một cách rõ ràng bằng cách viết công thức giải quyết bài toán thực tế trong Sheet Vi_Du_02_ThucHanh ngay dưới đây. Từ đó, bạn sẽ thấy vì sao nhóm hàm DATABASE lại tỏ ra vượt trội trong những tình huống lọc phức tạp hơn, đặc biệt là khi áp dụng với điều kiện OR.
Giờ mình tin rằng bạn đã có đáp án của mình rồi. Mình cũng sẽ cung cấp đáp án của mình ngay dưới đây. Các bạn hãy xem hình ảnh dưới đây trước.
Kết quả chính xác ở đây là 430. Vậy tại sao mình viết công thức SUMIFS như ở ô F10 bạn lại thu được kết quả là 530?
Lý do ở đây là:
- Các hàm DATABASE sẽ áp dụng điều kiện bạn đưa vào cho mỗi dòng trong Database chỉ duy nhất 1 lần.
- Hàm SUMIFS ở bên dưới cũng như vậy nhưng nếu điều kiện bạn đưa vào 1 dòng thoả mãn cùng lúc 2 điều kiện hoặc thì khi đó kết quả sẽ có sự sai lệch.
Ở đây bạn thấy kết quả sai lệch mất 100. Chính là do dòng đầu tiên có Region là North, Product là A và Salesperson là John.
Vậy muốn thay thế thì bạn sẽ viết công thức như thế nào?
Kết quả trả về lúc này là hoàn toàn chính xác: 530. Tuy nhiên, bạn có thể thấy rằng công thức sử dụng SUMIFS đã trở nên khá phức tạp, dù bài toán chỉ mới dừng lại ở một số điều kiện đơn giản.
Nếu bạn phải xử lý những trường hợp có nhiều điều kiện kết hợp phức tạp hơn — ví dụ kết hợp cả AND và OR, hoặc nhiều cột điều kiện thay đổi linh hoạt theo người dùng — thì công thức sẽ càng trở nên rối rắm, khó đọc và khó bảo trì.
Đây chính là lý do tại sao nhóm hàm DATABASE, mà cụ thể là DSUM, trở thành một lựa chọn vừa đơn giản, vừa linh hoạt hơn nhiều trong những tình huống như vậy.
Giờ mình sẽ giải thích điều kiện đã viết ở trên để các bạn có thể nắm rõ cách viết điều kiện khi áp dụng các hàm Database Function.
Như bạn có thể thấy, quy tắc viết điều kiện trong nhóm hàm DATABASE thực ra rất đơn giản và dễ hiểu. Cụ thể như sau:
🔹 Thứ nhất, bạn cần đảm bảo tiêu đề cột trong vùng điều kiện phải trùng khớp hoàn toàn với tiêu đề trong bảng dữ liệu (tức là hàng đầu tiên của vùng database). Đây là yếu tố bắt buộc để hàm có thể hiểu đúng điều kiện lọc.
🔹 Thứ hai, các điều kiện được viết trên cùng một dòng sẽ được hiểu là mối quan hệ AND (và).
Ví dụ: nếu bạn ghi Region = "North" và Product = "A" trên cùng dòng, thì công thức sẽ lọc những dòng thỏa mãn cả hai điều kiện cùng lúc.
🔹 Thứ ba, các điều kiện được viết trên nhiều dòng khác nhau (dưới cùng tiêu đề cột hoặc khác cột) sẽ được hiểu là mối quan hệ OR (hoặc).
Ví dụ: nếu dòng đầu là Region = "North" và Product = "A", còn dòng thứ hai là Salesperson = "John", thì Excel sẽ hiểu là:
(Region = "North" AND Product = "A") OR (Salesperson = "John")
Chính nhờ cấu trúc rõ ràng này, nhóm hàm DATABASE giúp bạn viết điều kiện linh hoạt hơn rất nhiều so với việc lồng ghép các hàm IF, OR, AND thủ công trong các hàm khác.
Như bạn có thể thấy, quy tắc viết điều kiện trong nhóm hàm DATABASE thực ra rất đơn giản và dễ hiểu. Cụ thể như sau:
🔹 Thứ nhất, bạn cần đảm bảo tiêu đề cột trong vùng điều kiện phải trùng khớp hoàn toàn với tiêu đề trong bảng dữ liệu (tức là hàng đầu tiên của vùng database). Đây là yếu tố bắt buộc để hàm có thể hiểu đúng điều kiện lọc.
🔹 Thứ hai, các điều kiện được viết trên cùng một dòng sẽ được hiểu là mối quan hệ AND (và).
Ví dụ: nếu bạn ghi Region = "North" và Product = "A" trên cùng dòng, thì công thức sẽ lọc những dòng thỏa mãn cả hai điều kiện cùng lúc.
🔹 Thứ ba, các điều kiện được viết trên nhiều dòng khác nhau (dưới cùng tiêu đề cột hoặc khác cột) sẽ được hiểu là mối quan hệ OR (hoặc).
Ví dụ: nếu dòng đầu là Region = "North" và Product = "A", còn dòng thứ hai là Salesperson = "John", thì Excel sẽ hiểu là:
(Region = "North" AND Product = "A") OR (Salesperson = "John")
Chính nhờ cấu trúc rõ ràng này, nhóm hàm DATABASE giúp bạn viết điều kiện linh hoạt hơn rất nhiều so với việc lồng ghép các hàm IF, OR, AND thủ công trong các hàm khác.
Và để có thể biết chi tiết hơn về nhóm hàm DATABASE Function cũng như ứng dụng thực tế của nhóm hàm này cũng như sử dụng Advanced Filter thì đừng ngại khi tham gia workshop hoàn toàn FREE của ERX Việt Nam tại link dưới đây: https://khoahoc.erx.vn/workshop
please authorize