31.7 C
Ho Chi Minh City
Thursday, June 4, 2026
AIPHOGPT.COM
Trang chủThủ Thuật ExcelTôi biết dân chuyên Excel ghét hàm này, nhưng nó vẫn là...

Tôi biết dân chuyên Excel ghét hàm này, nhưng nó vẫn là “vũ khí bí mật” yêu thích của tôi

Join LeQuocThai.Com on Telegram Channel

Đánh giá lequocthai.com:

0 / 5 Voted: 0 Votes: 0

Your page rank:

Chỉ cần nhắc đến hàm INDIRECT trong các hội nhóm về Excel, bạn sẽ lập tức thấy nhiều ý kiến trái chiều. Nó là một hàm “volatile”, nghĩa là nó luôn trong trạng thái sẵn sàng và tự động tính toán lại mỗi khi có thay đổi nhỏ, điều này có thể biến một file Excel nhanh thành một file ì ạch đến khó chịu. Tuy nhiên, nếu biết cách sử dụng đúng, nó lại là vũ khí bí mật để xây dựng các bảng điều khiển (dashboard) động, linh hoạt.

Mặc dù tiếng tăm làm chậm bảng tính của INDIRECT là có thật, nhưng mối nguy thực sự không nằm ở bản thân hàm số, mà là ở việc dùng nó cho những công việc không phù hợp trong khi có những lựa chọn thay thế tốt hơn. Để thành thạo INDIRECT, bạn cần biết khi nào nên tận dụng sự linh hoạt của nó và khi nào nên chuyển sang một giải pháp ổn định hơn.

Cách hoạt động của hàm INDIRECT

Hầu hết các hàm Excel đều tham chiếu trực tiếp, nhưng INDIRECT lại hoạt động một cách gián tiếp. Hãy tưởng tượng nó như một mảnh giấy ghi chú dán trên cửa: thay vì bước thẳng vào một căn phòng (một công thức thông thường), mảnh giấy đó chỉ cho bạn địa chỉ của một căn phòng khác để tìm dữ liệu.

Cú pháp của hàm INDIRECT trong Excel khá đơn giản:


=INDIRECT(ref_text,[a1])

Trong đó:

  • ref_text có thể là: một tham chiếu ô thông thường (như A1), một tham chiếu theo kiểu R1C1, một ô đã được đặt tên (named range), hoặc một chuỗi văn bản chứa tham chiếu đến một ô.
  • a1 (tùy chọn) là một giá trị luận lý (TRUE/FALSE). Nếu là TRUE hoặc bỏ trống, Excel sẽ hiểu ref_text là tham chiếu kiểu A1 (cột chữ, hàng số). Nếu là FALSE, Excel sẽ hiểu ref_text là tham chiếu kiểu R1C1 (cả cột và hàng đều là số, ví dụ R2C1 là hàng 2, cột 1).

Theo mặc định, Excel dùng kiểu tham chiếu A1. Vì vậy, trong hầu hết các trường hợp, bạn có thể bỏ qua đối số a1.

Khám phá:  Tạo danh sách sổ xuống trong Excel

INDIRECT lý tưởng để tạo danh sách thả xuống phụ thuộc (Dependent Drop-down Lists)

Giả sử bạn có hai bảng đã được đặt tên (Named Tables) trong Excel: T_FranceT_USA. Bạn muốn các tùy chọn trong ô Thành phố (F2) thay đổi tự động dựa trên lựa chọn Quốc gia (E2).

Image 23: Một trang tính Excel với bảng các thành phố Pháp, bảng các thành phố Mỹ và một khu vực tra cứu nơi sẽ thêm các danh sách thả xuống xếp tầng.

Bước 1: Tạo danh sách thả xuống cho Quốc gia (ô E2). Chọn ô E2, vào tab Data, nhấp Data Validation.

Image 24: Một ô trong Excel có nhãn 'Country' được chọn, và nút Data Validation trong tab Data được làm nổi bật.

Bước 2: Trong hộp thoại, chọn List ở mục Allow, và gõ France,USA vào ô Source, sau đó nhấn OK.

Image 25: List được chọn trong hộp thoại Data Validation của Excel, và 'France,USA' được gõ vào trường Source.

Bước 3: Tạo danh sách thả xuống phụ thuộc cho Thành phố (ô F2). Chọn ô F2, mở lại Data Validation, chọn List. Lần này, trong ô Source, bạn nhập công thức sau:


=INDIRECT("T_"&E2)

Image 26: Một công thức INDIRECT trỏ đến tên bảng và một giá trị trong ô E2 được gõ vào trường Source của hộp thoại Data Validation trong Excel.

Bây giờ, khi bạn chọn “USA” ở ô E2, danh sách ở ô F2 sẽ hiển thị các thành phố từ bảng T_USA. Khi chọn “France”, danh sách sẽ chuyển sang các thành phố từ bảng T_France.

Image 27: Các danh sách thả xuống xếp tầng trong Excel hiển thị danh sách thành phố trong ô F2 theo quốc gia được chọn trong ô E2.

Công thức hoạt động bằng cách dùng ký tự “&” để nối chuỗi “T_” với giá trị trong ô E2 (ví dụ: “T_USA”). Sau đó, INDIRECT biến chuỗi văn bản này thành một tham chiếu thực sự đến bảng có tên tương ứng.

Tại sao chuyên gia ghét nó? Tại sao tôi vẫn dùng nó?
Trong một file Excel lớn với hàng nghìn dòng chứa danh sách thả xuống dùng INDIRECT, đặc tính “luôn tính toán lại” của nó có thể làm chậm file một cách đáng kể. INDIRECT là cách đơn giản và hiệu quả nhất để tạo danh sách thả xuống phụ thuộc mà không cần dùng VBA. Trong một bố cục tập trung như ví dụ này, tác động đến hiệu suất là rất nhỏ.

INDIRECT là lựa chọn tuyệt vời để liên kết một Dashboard đa bảng (Multi-Table Dashboard)

Giả sử bạn có các bảng doanh số riêng biệt cho từng năm: T_2024T_2025. Bạn muốn một ô tổng hợp (J2) tự động tính tổng doanh số dựa trên năm được chọn từ menu thả xuống (I2).

Khám phá:  VBA Excel sử dụng Scripting Dictionary

Image 29: Một trang tính Excel với hai bảng doanh số, một cho năm 2024 và một cho năm 2025, cùng một khu vực tra cứu Năm và Tổng ở bên phải.

Bước 1: Tạo một bảng thứ ba tên là T_Years, trong đó liệt kê các năm (2024, 2025) để làm nguồn cho danh sách thả xuống ở ô I2.

Image 30: Một trang tính Excel với hai bảng doanh số, một bảng chứa 2024 và 2025, và một khu vực tra cứu chưa có dữ liệu.

Bước 2: Đảm bảo các bảng dữ liệu được đặt tên nhất quán (T_[Năm]) và cột cần lấy dữ liệu có cùng tên (ví dụ: “Sales”).

Bước 3: Tạo danh sách thả xuống cho Năm (ô I2) bằng Data Validation > List, và chọn nguồn là cột năm trong bảng T_Years.

Image 32: List được chọn trong hộp thoại Data Validation của Excel, và các tham chiếu ô đến bảng Years được chọn trong trường Source.

Bước 4: Trong ô J2, nhập công thức tính tổng động sau:


=SUM(INDIRECT("T_"&I2&"[Sales]"))

Image 33: Hàm INDIRECT được sử dụng trong Excel để tham chiếu đến tên bảng, với hàm SUM tính toán tất cả các giá trị trong cột Sales.

Công thức này ghép chuỗi “T_”, giá trị năm ở ô I2, và “[Sales]” để tạo thành một tham chiếu bảng động (ví dụ: “T_2024[Sales]”). INDIRECT sẽ chuyển chuỗi này thành tham chiếu thực tế, sau đó hàm SUM sẽ tính tổng cột Sales của bảng đó.

Tại sao chuyên gia ghét nó? Tại sao tôi vẫn dùng nó?
Cách thiết lập này khá “mỏng manh”. Nếu ai đó đổi tên bảng T_2024 thành Table2024, hoặc có khoảng trắng thừa trong ô chứa năm, chuỗi văn bản sẽ không khớp và công thức bị lỗi #REF!. Bất chấp nhược điểm đó, tôi vẫn dùng vì nó giúp dashboard dễ mở rộng. Khi có năm 2026, tôi chỉ cần tạo bảng T_2026 và thêm “2026” vào bảng T_Years. Toàn bộ dashboard sẽ tự động cập nhật mà không cần sửa công thức.

INDIRECT không phải lúc nào cũng tốt nhất: Tính toán trên một cửa sổ trượt (Rolling Window)

INDIRECT rất tốt để chuyển đổi giữa các bảng riêng biệt. Tuy nhiên, khi dùng nó để tính toán liên tục trên một tập dữ liệu đang mở rộng, cái giá về hiệu suất (do tính volatile) là quá lớn.

Ví dụ: Bạn có một bảng T_Stocks cập nhật giá mỗi ngày. Bạn muốn tính giá trung bình của X bản ghi gần nhất, với X là số bạn nhập vào ô D3.

Image 35: Một bảng Excel với ngày tháng ở cột A và giá ở cột B, cùng một khu vực tra cứu liền kề sẽ được sử dụng để tìm giá trị trung bình của năm mục nhập cuối cùng.

Bạn có thể dùng INDIRECT để xây dựng phạm vi động, nhưng với loại tính toán này, tôi khuyên dùng hàm INDEX (không volatile) – nó chỉ tính toán lại khi dữ liệu trong phạm vi tham chiếu thay đổi.

Khám phá:  Tôi dùng Excel cả ngày – phím tắt Ctrl+1 đơn giản xử lý 80% công việc

Công thức trong ô E3 sẽ là:


=AVERAGE(INDEX(T_Stocks[Price],ROWS(T_Stocks)-(D3-1)):INDEX(T_Stocks[Price],ROWS(T_Stocks)))

Dấu hai chấm (:) ở giữa hai hàm INDEX tạo ra một phạm vi động. Hàm INDEX đầu tiên xác định điểm bắt đầu (lấy từ dưới lên), hàm INDEX thứ hai xác định điểm kết thúc (hàng cuối cùng của bảng).

Image 36: Hàm AVERAGE được sử dụng với INDEX để tìm giá trị trung bình của năm mục nhập cuối cùng trong cột Price của một bảng.

Nếu bạn đổi số 5 trong ô D3 thành 10, công thức sẽ ngay lập tức tính trung bình cho 10 bản ghi gần nhất.

Tại sao chuyên gia ghét nó? Tại sao tôi không dùng INDIRECT ở đây?
Dùng INDIRECT để tạo phạm vi tính toán động là một trong những cách nhanh nhất làm giảm hiệu suất Excel nghiêm trọng, vì mỗi lần thay đổi, Excel phải xây dựng lại tham chiếu từ chuỗi văn bản. Chuyển sang dùng INDEX cung cấp sự linh hoạt tương tự mà không phải trả giá về tốc độ xử lý.

INDIRECT vẫn là một trong những hàm gây tranh cãi nhất Excel vì bản chất volatile có thể khiến file chạy chậm. Nhưng khi bạn cần biến một chuỗi văn bản thành tham chiếu động cho danh sách thả xuống phụ thuộc hay để chuyển đổi giữa các bảng, nó vẫn là công cụ phù hợp nhất. Hiểu rõ và thận trọng với đặc tính volatile của nó là chìa khóa để duy trì một bảng tính Excel mạnh mẽ và hiệu quả.

Tags:
Excel tips, INDIRECT function, Dashboard automation
Tags: Excel tips, INDIRECT function, Dashboard automation

Join LeQuocThai.Com on Telegram Channel

Lê Quốc Thái
Lê Quốc Tháihttps://lequocthai.com/
Yep! I am Le Quoc Thai codename name tnfsmith, one among of netizens beloved internet precious, favorite accumulate sharing all my knowledge and experience Excel, PC tips tricks, gadget news during over decades working in banking data analysis.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây
Captcha verification failed!
CAPTCHA user score failed. Please contact us!

Join LeQuocThai.Com on Telegram Channel

Đọc nhiều nhất

BÀI VIẾT MỚI NHẤT

CÙNG CHỦ ĐỀ