Chào mọi người,
Hôm nay mình muốn chia sẻ một mẹo nhỏ mà mình mới khám phá ra, giúp việc tham chiếu đến các ô hoặc vùng dữ liệu trong Excel trở nên linh hoạt hơn rất nhiều, đặc biệt là khi địa chỉ ô/vùng đó thay đổi dựa trên một giá trị khác. Đó là sự kết hợp giữa hàm INDIRECT và MATCH.
Chúng ta đều biết hàm MATCH rất mạnh trong việc tìm kiếm vị trí của một giá trị trong một danh sách. Tuy nhiên, kết quả của MATCH chỉ là một số thứ tự. Để sử dụng số thứ tự này để truy cập trực tiếp vào một ô hoặc một vùng dữ liệu, chúng ta cần đến hàm INDIRECT.
Giả sử bạn có một bảng dữ liệu và muốn lấy giá trị từ một cột cụ thể, mà tên cột này lại được xác định bởi một giá trị ở một ô khác. Ví dụ:
- Bảng dữ liệu của bạn bắt đầu từ
A1. - Trong ô
E1, bạn nhập tên của cột bạn muốn lấy dữ liệu (ví dụ: "Doanh thu", "Số lượng", "Chi phí"). - Bạn muốn lấy dữ liệu từ cột tương ứng với tên ở
E1, tại hàng thứ 5.
Chúng ta có thể làm như sau:
- Đầu tiên, dùng
MATCHđể tìm xem tên cột trongE1nằm ở cột thứ mấy trong tiêu đề bảng (giả sử tiêu đề nằm ở hàng 1, từ cột A đến D). Công thức sẽ là:=MATCH(E1, A1:D1, 0). Giả sử kết quả là 2 (tức là cột "Doanh thu" ở cột B). - Tiếp theo, dùng
INDIRECTđể tạo địa chỉ ô dựa trên kết quả củaMATCHvà hàng mong muốn. Ta muốn lấy ô ở cột thứ 2, hàng thứ 5. HàmINDIRECTcần một chuỗi văn bản đại diện cho địa chỉ ô. Ta có thể tạo chuỗi này bằng cách nối các phần lại:="B"&5hoặc dùng địa chỉ cột dạng R1C1. Tuy nhiên, cách làm động hơn là dùng kết quả củaMATCH.
Cách kết hợp:
=INDIRECT(ADDRESS(5, MATCH(E1, A1:D1, 0)))Trong công thức trên:
MATCH(E1, A1:D1, 0)trả về số thứ tự của cột cần lấy.ADDRESS(5, ...)tạo ra địa chỉ ô dạng văn bản (ví dụ: "$B$5") dựa trên hàng 5 và số thứ tự cột tìm được.INDIRECT(...)chuyển địa chỉ văn bản đó thành một tham chiếu ô thực sự để lấy giá trị.
Cách này rất hữu ích khi bạn cần xây dựng các báo cáo động, hoặc khi người dùng có thể chọn tiêu chí tham chiếu. Hy vọng chia sẻ này giúp ích cho mọi người!