Bạn đang tìm cách đếm tần suất xuất hiện của một giá trị theo thứ tự tăng dần trong Excel? Ví dụ, với dãy [“a”, “b”, “c”, “b”, “a”], làm sao để có kết quả là [1, 1, 1, 2, 2]? Bài viết này trên Thủ Thuật sẽ hướng dẫn bạn sử dụng hàm MAP mạnh mẽ để giải quyết vấn đề này một cách hiệu quả.
Đánh Số Thứ Tự Xuất Hiện với Hàm MAP
Giả sử bạn có dữ liệu sau:
Danh sách các ký tự a, b, c
Mục tiêu là đánh số thứ tự xuất hiện của mỗi giá trị. “a” xuất hiện lần đầu là 1, lần hai là 2, tương tự cho “b” và “c”. Kết quả mong muốn là mảng 1, 1, 1, 2, 2:
Kết quả đánh số thứ tự
Cách đơn giản nhất là dùng hàm COUNTIF tại ô B1:
=COUNTIF($A$1:A1;A1)
Sử dụng hàm COUNTIF
Công thức này khóa ô đầu tiên và đếm các phần tử xuất hiện. Tuy nhiên, COUNTIF/COUNTIFS yêu cầu tham chiếu đến ô. Nếu dữ liệu là kết quả của một phép tính khác (mảng trong bộ nhớ), COUNTIF sẽ không hoạt động.
Vậy giải pháp là gì?
Ảnh động minh họa
Hãy xem xét công thức sau sử dụng hàm MAP:
=MAP(SEQUENCE(COUNTA({"a";"b";"c";"b";"a"}));LAMBDA(i;SUM(--(INDEX({"a";"b";"c";"b";"a"}; SEQUENCE(i)) = INDEX({"a";"b";"c";"b";"a"}; i)))))
Kết quả sử dụng hàm MAP
Công thức này xử lý dữ liệu trực tiếp trong bộ nhớ, không cần tham chiếu đến ô. Nó hoạt động theo 2 bước:
Tạo các mảng con:
$A$1:A1=A1
,$A$1:A2=A2
,$A$1:A3=A3
,$A$1:A4=A4
,$A$1:A5=A5
. Kết quả là các mảng logic:{TRUE}
,{FALSE;TRUE}
,{FALSE;FALSE;TRUE}
,{FALSE;TRUE;FALSE;TRUE}
,{TRUE;FALSE;FALSE;FALSE;TRUE}
.Hàm
SUM
kết hợp với--
chuyểnTRUE
thành 1 vàFALSE
thành 0, tính tổng để ra kết quả 1, 1, 1, 2, 2.
Ứng Dụng với Hàm PIVOTBY
Một ứng dụng hữu ích là kết hợp với hàm PIVOTBY
để đếm giá trị không trùng lặp (Distinct Count) mà không cần Data Model:
=PIVOTBY(hàng;cột;giá trị;LAMBDA(x;LET(arr;VSTACK(x);filter_arr;MAP(SEQUENCE(COUNTA(arr));LAMBDA(i;SUM(--(INDEX(arr; SEQUENCE(i)) = INDEX(arr; i)))));COUNTA(FILTER(arr;filter_arr = 1 )))))
Công thức này tạo bảng đếm tăng dần, sau đó dùng FILTER
để chỉ giữ lại giá trị đầu tiên (bằng 1) của mỗi giá trị duy nhất.
Ngoài ra, bạn có thể dùng hàm UNIQUE
để đếm giá trị không trùng lặp:
=PIVOTBY(hàng;cột;giá trị;LAMBDA(x;COUNTA(UNIQUE(HSTACK(x)))))
Tóm lại, hàm MAP
cung cấp một cách linh hoạt và hiệu quả để đếm tần suất xuất hiện giá trị tăng dần trong Excel, đặc biệt hữu ích khi xử lý dữ liệu từ các phép tính. Kết hợp với PIVOTBY
, bạn có thể thực hiện các phân tích dữ liệu phức tạp hơn.
Discussion about this post