Nếu BYROW là chuyên gia xử lý theo hàng, thì MAP giống như một “người vận chuyển” linh hoạt hơn. Hàm này cho phép bạn đi qua từng ô (hoặc từng hàng) trong một hoặc nhiều vùng dữ liệu và áp dụng một công thức cho từng phần tử đó.
Điểm mạnh nhất của MAP là nó có thể xử lý nhiều dải ô (ranges) cùng một lúc.
1. Cú pháp của hàm
MAP(array1, [array2, ...], LAMBDA(name1, [name2, ...], formula))
-
- array1, array2…: Các vùng dữ liệu bạn muốn xử lý.
- LAMBDA: Hàm để định nghĩa phép tính.
- name1, name2…: Tên đại diện cho giá trị của từng ô trong array1, array2 tương ứng.
- formula: Phép toán logic bạn muốn thực hiện.
2. Ví dụ minh họa
Ví dụ 1: Nhân đôi giá trị của từng ô
Giả sử bạn có vùng dữ liệu từ A1:B5, bạn muốn nhân mọi con số trong đó với 2:
=MAP(A1:B5, LAMBDA(o, o * 2))
Kết quả sẽ trả về một bảng có kích thước y hệt A1:B5 nhưng giá trị đã được nhân đôi.
Ví dụ 2: Kết hợp dữ liệu từ 2 cột (Tên và Họ)
Giả sử Cột A là Tên, Cột B là Họ. Bạn muốn tạo cột Họ và Tên:
=MAP(A2:A10, B2:B10, LAMBDA(ten, ho, ho & " " & ten))
Ở đây, ten lấy giá trị từ cột A, ho lấy giá trị từ cột B. Hàm sẽ ghép chúng lại cho từng dòng.
Ví dụ 3: Kiểm tra nhiều điều kiện phức tạp
Bạn muốn kiểm tra: Nếu doanh thu (Cột A) > 100 và khu vực (Cột B) là “Hà Nội” thì ghi “Ưu tiên”, ngược lại để trống.
=MAP(A2:A10, B2:B10, LAMBDA(ds, kv, IF(AND(ds > 100, kv = "Hà Nội"), "Ưu tiên", "")))
3. So sánh MAP và BYROW (Để bạn dễ phân biệt)
| Đặc điểm | Hàm BYROW | Hàm MAP |
|---|---|---|
| Phạm vi xử lý | Xử lý nguyên một hàng cùng lúc. | Xử lý từng ô đơn lẻ. |
| Số lượng mảng | Chỉ nhận 1 mảng dữ liệu. | Có thể nhận nhiều mảng cùng lúc. |
| Kết quả trả về | Luôn là 1 cột (mỗi hàng 1 kết quả). | Trả về mảng có kích thước giống mảng gốc. |
| Ứng dụng chính | Tính Tổng, Max, Min của một hàng. | Tính toán logic phức tạp, kết hợp nhiều cột. |
4. Lưu ý khi sử dụng
Kích thước mảng: Nếu bạn dùng MAP cho nhiều mảng (array1, array2…), các mảng này phải có cùng kích thước (cùng số hàng và số cột), nếu không hàm sẽ báo lỗi #VALUE!.
Hiệu năng: MAP rất mạnh nhưng nếu bạn áp dụng cho hàng chục ngàn dòng với công thức cực kỳ phức tạp, trang tính có thể sẽ hơi chậm một chút.
