Trong bài viết này, blog.hocexcel.online sẽ hướng dẫn về các bạn cách sử dụng hàm INDIRECT, cũng như các chức năng cơ bản và cung cấp một số công thức ví dụ nhằm minh họa cách sử dụng hàm INDIRECT trong Excel.
Xem nhanh
Hàm INDIRECT được sử dụng để tham chiếu gián tiếp các ô, dãy, các trang tính hoặc các bảng tính khác. Nói cách khác, hàm INDIRECT cho phép bạn tạo một ô chứa tham chiếu động hoặc 1 mảng chứa tham chiếu trong Excel, thay vì “mã hóa cố định” luôn những tham chiếu đó vào các công thức Excel của bạn. Kết quả là, bạn có thể thay đổi một tham chiếu ô trong một công thức mà không làm thay đổi công thức đó. Hơn nữa, các tham chiếu INDIRECT sẽ không thay đổi khi một số hàng hoặc cột mới được chèn vào bảng tính hoặc khi bạn xóa bất kỳ những gì hiện có.
Tất cả những điều này có lẽ sẽ dễ hiểu qua một ví dụ bên dưới đây. Tuy nhiên, để có thể viết một công thức, thậm chí là đơn giản nhất, bạn cần biết các đối số của hàm. Vì vậy, chúng ta hãy xem xét cú pháp của hàm INDIRECT:
Hàm INDIRECT chỉ có hai đối số, đối số thứ nhất là bắt buộc trong khi đối số thứ hai thì không:
INDIRECT (ref_text, [a1])
Ref_text – là một ô tham chiếu, hoặc một tham chiếu đến ô ở dạng một chuỗi văn bản, hoặc một mảng mà đã được đặt tên.
a1 – là một giá trị logic xác định loại tham chiếu của đối số ref_text:
Mặc dù kiểu tham chiếu R1C1 có thể hữu ích trong những tình huống nhất định, có thể bạn, thường sẽ muốn sử dụng các tham chiếu A1 quen thuộc hơn. Dù sao, gần như tất cả các công thức hàm INDIRECT trong hướng dẫn này sẽ sử dụng các tham chiếu A1, do đó chúng ta sẽ bỏ qua đối số thứ hai.
Để hiểu sâu hơn về hàm, hãy viết một công thức đơn giản thể hiện cách bạn sử dụng INDIRECT trong Excel.
Giả sử bạn có số 3 trong ô A1 và văn bản “A1” trong ô C1. Bây giờ, đặt công thức = INDIRECT (C1) trong bất kỳ ô nào và hãy xem những gì xảy ra nhé:
Vì vậy, điều mà hàm INDIRECT thực sự làm trong ví dụ này là chuyển đổi một chuỗi văn bản thành một ô tham chiếu.
Xem thêm: Khóa học Excel online
Như đã trình bày trong ví dụ trên, bạn có thể sử dụng hàm INDIRECT để đặt địa chỉ của một ô vào một ô khác như một chuỗi văn bản thông thường, và lấy giá trị của ô thứ nhất bằng cách tham chiếu đến ô thứ hai. Tuy nhiên, ví dụ điển hình đó cũng chỉ là một gợi ý nhỏ về các khả năng INDIRECT.
Khi làm việc với dữ liệu thực, hàm INDIRECT có thể biến bất kỳ chuỗi văn bản nào thành tham chiếu, bao gồm các chuỗi rất phức tạp mà bạn xây dựng bằng cách sử dụng các giá trị của các ô khác và các kết quả được trả về bởi các công thức Excel khác. Nhưng đừng áp đặt cho nó một giới hạn, hãy lướt qua một số công thức khác liên quan đến INDIRECT trong Excel, xem kĩ từng cái một.
Như bạn nhớ, hàm INDIRECT cho phép các kiểu tham chiếu A1 và R1C1. Thông thường, bạn không thể sử dụng cả hai kiểu trong cùng 1 trang cùng lúc được, mà bạn chỉ có thể chuyển đổi giữa hai kiểu tham chiếu, thông qua File> Options> Formula> chọn R1C1. Đây là lý do tại sao người dùng Excel lại hiếm khi nghĩ đến việc sử dụng R1C1 làm phương pháp tham chiếu thay thế.
Trong một công thức INDIRECT khác, bạn có thể sử dụng một trong hai kiểu tham chiếu trên cùng một trang tính, nếu bạn muốn. Trước khi chúng tôi chuyển tới mục khác, thì có thể bạn rất muốn biết sự khác biệt giữa các kiểu tham chiếu A1 và R1C1:
Kiểu A1 là kiểu tham chiếu thông thường trong Excel, liên quan đến một cột theo sau bởi một số hàng. Ví dụ, B2 tham chiếu đến ô tại giao điểm Trên cột B và dòng 2.
R1C1 là loại tham chiếu ngược lại với A1 – các hàng mà tiếp theo là các cột, điều này sẽ khiến bạn phải mất một thời gian để làm quen 🙂 Ví dụ, R4C1 dùng để chỉ ô A4 trong hàng 4, cột 1 trong một trang tính. Nếu không có số nào xuất hiện sau chữ cái, thì bạn đang tham chiếu đến cùng hàng hoặc cột.
Và bây giờ, chúng ta hãy xem cách mà hàm INDIRECT xử lý các tham chiếu A1 và R1C1:
Như bạn thấy trong ảnh chụp màn hình ở trên, ba công thức INDIRECT đều trả về kết quả tương tự. Tôi cược là bạn đã biết tại sao.
Đây là cách đơn giản nhất. Công thức tham chiếu đến ô C1, lấy chuỗi giá trị-văn bản A2 của nó, chuyển nó thành một tham chiếu ô, và khi tham chiếu qua ô A2 thì trả về giá trị là 222.
FALSE trong đối số thứ 2 chỉ ra rằng giá trị được tham chiếu (C3) là tham chiếu ô kiểu R1C1, tức là một số hàng, tiếp theo là một số cột. Do đó, công thức INDIRECT của chúng tôi diễn giải giá trị trong ô C3 (R2C1) như một tham chiếu đến ô tại kết hợp của hàng 2 và cột 1, đó là ô A2.
Giống như công thức trước, công thức INDIRECT này cũng có FALSE trong đối số thứ hai, có nghĩa là nó diễn giải giá trị trong đối số đầu tiên như một tham chiếu kiểu R1C1. Vì vậy, công thức sẽ lấy giá trị trong ô C5 (R3C) và biến nó thành địa chỉ ô D3 (hàng 3 trong cột đó) và tiếp tục như trên.
Tuy nhiên, nếu giá trị trong ô C5 là R3C3 chứ không phải là R3C, cùng một công thức sẽ trả lại giá trị trong ô C3 (R2C1) mà không đi thêm nữa. Thành thực mà nói, tôi không thể đưa ra bất kỳ lời giải thích hợp lý cho tình huống như vậy, có thể rằng nó chỉ là một sự mập mờ mơ hồ trong hàm INDIRECT của Excel.
Tương tự như cách chúng ta tạo các tham chiếu từ các giá trị của ô, bạn có thể kết hợp một chuỗi văn bản và một tham chiếu ô trong công thức INDIRECT của bạn, gắn liền dấu (&).
Trong ví dụ sau, công thức: = INDIRECT (“B” & C2) trả về giá trị từ ô B2 dựa trên chuỗi logic sau:
Hàm INDIRECT kết nối các phần tử trong đối số ref_text – văn bản “B” và giá trị trong ô C2 -> giá trị trong ô C2 là số 2, tạo ra tham chiếu ô là B2 -> công thức đi đến ô B2 và trả về giá trị của nó, là “10”.
Ngoài việc tạo các tham chiếu từ các ô và văn bản, bạn có thể dùng hàm INDIRECT để tham chiếu tới các vùng dữ liệu đã đặt tên.
Giả sử, bạn có các vùng được đặt tên sau trong bảng của bạn:
Để tạo một tham chiếu động cho bất kỳ vùng dữ liệu nào ở trên, chỉ cần nhập tên của nó vào một số ô, giả sử là G1, và tham chiếu ô đó từ công thức INDIRECT: = INDIRECT (G1).
Và bây giờ, bạn có thể sử dụng công thức INDIRECT này vào các hàm Excel khác để tính tổng và trung bình của các giá trị trong một dải nào đó, hoặc tìm giá trị cực đại / tối thiểu trong dải:
Và bây giờ bạn đã nắm được ý tưởng chung về cách sử dụng hàm công thức INDIRECT trong Excel, chúng ta có thể thử làm với các công thức mạnh hơn.
Tính hữu ích của hàm INDIRECT trong Excel không giới hạn trong việc xây dựng các tham chiếu cho những ô có thể bị thay đổi. Bạn cũng có thể sử dụng nó để tham chiếu các ô trong các trang tính khác, và đây là hướng dẫn:
Giả sử bạn có một số dữ liệu quan trọng trong Bảng 1 và bạn muốn kéo dữ liệu đó vào trong Bảng 2. Hình sau đây cho thấy cách một công thức INDIRECT có thể làm việc này:
Hãy chia nhỏ công thức bạn nhìn thấy trong hình để nghiên cứu.
Như bạn đã biết, cách thông thường để tham chiếu một trang tính khác trong Excel là ghi sau tên của bảng một dấu chấm than và một tham chiếu ô / dải, ví như SheetName! Range. Vì một tên trang thường chứa một dấu cách, nên bạn phải dán nó vào trong dấu nháy đơn để tránh lỗi, ví dụ ‘My Sheet!‘ $A$1.
Và bây giờ, tất cả những gì bạn phải làm là nhập tên bảng trong một ô, địa chỉ ô trong một ô khác, nối chúng với nhau trong một chuỗi văn bản, và đưa nó vào hàm INDIRECT. Hãy nhớ rằng trong một chuỗi văn bản, bạn phải kèm theo mỗi phần tử với địa chỉ hoặc số của ô trong ngoặc kép và liên kết tất cả các yếu tố với nhau bằng cách sử dụng “&”
Với những điều trên, cấu trúc hàm như sau:
INDIRECT(“‘” & Sheet’s name & “‘!” & Cell to pull data from)
Quay lại ví dụ của chúng ta, bạn đặt tên của bảng trong ô A1, và gõ các địa chỉ ô trong cột B, như được thể hiện trong hình ở trên. Khi đó, bạn có được công thức sau:
INDIRECT (“‘” & $A$1 & “‘!” & B1)
Ngoài ra, hãy lưu ý rằng nếu bạn sao chép công thức vào nhiều ô, bạn phải cố định tham chiếu đến tên trang tính, bằng cách sử dụng các tham chiếu ô tuyệt đối như $A$1.
Ghi chú:
IF (OR ($A$1 = “”, B1 = “”), “”, INDIRECT (“‘” & $A$1 & “‘!” & B1))
IFERROR (INDIRECT (“‘” & $A$1 & “‘!” & B1), “”)
Công thức INDIRECT tham chiếu đến một bảng tính Excel khác dựa trên cách tiếp cận tương tự như tham chiếu đến trang tính khác. Bạn chỉ cần xác định tên của bảng tính, nghĩa là để có được tên bảng và địa chỉ ô.
Để làm cho mọi việc trở nên dễ dàng hơn, hãy bắt đầu bằng cách tạo một tham chiếu cho một bảng tính khác theo cách thông thường (dấu nhấy được thêm vào trong trường hợp bảng tính và / hoặc tên bảng của bạn có chứa dấu cách):
‘[Book_name.xlsx] Sheet_name’!Range
Giả sử rằng tên sách nằm trong ô A2, tên bảng là B2, và địa chỉ ô trong C2, chúng ta lấy công thức sau:
= INDIRECT (“‘[” & $A$2 & “]” & $B$2 & “‘!” & C2)
Vì bạn không muốn các ô chứa tên của bảng tính và trang tính thay đổi khi sao chép công thức vào các ô khác, bạn sẽ phải cố định chúng bằng cách sử dụng tham chiếu ô tuyệt đối, tương ứng là $A$2 và $B$2.
Và bây giờ, bạn có thể dễ dàng viết tham chiếu động của riêng bạn vào một bảng tính Excel khác bằng cách sử dụng mẫu sau:
=INDIRECT(“‘[” & Book name & “]” & Sheet name & “‘!” & Cell address)
Chú thích: Bảng tính mà công thức của bạn tham chiếu đến nên luôn luôn được mở, nếu không chức năng INDIRECT sẽ ném một lỗi #REF. Như thường lệ, chức năng IFERROR có thể giúp bạn tránh được nó:
= IFERROR (INDIRECT (“” [“& A2 &”] “& $A$1 &” ‘! “& B1),” “)
Thông thường, Microsoft Excel thay đổi các tham chiếu ô khi bạn chèn mới hoặc xoá các hàng hoặc cột hiện có trong một trang tính. Để ngăn chặn điều này xảy ra, bạn có thể sử dụng chức năng Hàm INDIRECT để làm việc với các tham chiếu ô cần giữ nguyên trong mọi trường hợp.
Để minh họa sự khác biệt, vui lòng thực hiện các bước sau:
Và hãy xem điều gì sẽ xảy ra? Giá trị của ô được gán giá trị ô khác, vẫn trả về 20, vì công thức của nó đã được tự động thay đổi thành = A2. Ô với công thức INDIRECT sẽ bây giờ trả về 0, vì công thức đã không thay đổi khi có một dòng mới được chèn vào và nó vẫn còn tham chiếu đến ô A1, hiện đang được để trống:
Sau khi nghe tôi giải thích, thì bạn có thể cảm thấy rằng hàm công thức INDIRECT có vẻ là gây phiền toái nhiều hơn là giúp đỡ. Được thôi, hãy thử một ví dụ khác:
Giả sử, bạn muốn lấy tổng các giá trị trong dải A2: A5, và bạn có thể dễ dàng thực hiện việc này bằng cách sử dụng hàm SUM:
= SUM (A2: A5)
Tuy nhiên, bạn muốn công thức vẫn giữ nguyên, cho dù có bao nhiêu hàng được xóa hoặc chèn vào. Giải pháp rõ ràng nhất – sử dụng tham chiếu cố định – sẽ không giúp ích gì. Để chắc chắn, hãy nhập công thức = SUM ($A$2:$A$5) vào một số ô, chèn một hàng mới, giả sử ở dòng 3, và … phát hiện công thức được chuyển thành = SUM ($A$2:$A$6) .
Tất nhiên, như vậy Microsoft Excel làm việc tốt trong nhiều trường hợp. Tuy nhiên, có thể bạn không muốn công thức tự động thay đổi. Giải pháp là sử dụng chức năng INDIRECT, như sau:
= SUM (INDIRECT (“A2: A5”))
Vì Excel nhận ra rằng “A1: A5” chỉ là một chuỗi văn bản chứ không phải là một dải tham chiếu, nó sẽ không thực hiện bất kỳ thay đổi nào khi bạn chèn hoặc xóa một hàng.
Ngoài SUM, INDIRECT thường được sử dụng với các chức năng Excel khác như ROW, COLUMN, ADDRESS, VLOOKUP, SUMIF, đó chỉ là một vài đại diện tiêu biểu.
Ví dụ 1. Hàm INDIRECT và ROW
Thường thì hàm ROW được sử dụng trong Excel để trả về một mảng các giá trị. Ví dụ, bạn có thể sử dụng công thức mảng sau (nhớ nhấn Ctrl + Shift + Enter) để trả lại trung bình của 3 số nhỏ nhất trong dải A1: A10:
= AVERAGE(SMALL (A1: A10, ROW (1: 3)))
Tuy nhiên, nếu bạn chèn một hàng mới trong bảng tính của bạn, bất cứ nơi nào giữa các hàng 1 và 3, dải trong công thức hàm ROW sẽ được thay đổi thành ROW (1:4) và công thức sẽ trả lại trung bình của 4 con số nhỏ nhất, thay vì 3 .
Để tránh điều này xảy ra, hãy lồng hàm INDIRECT trong hàm ROW và công thức trên của bạn sẽ luôn luôn chính xác, cho dù có bao nhiêu dòng được chèn vào hoặc bị xóa:
= AVERAGE(SMALL(A1: A10, ROW (INDIRECT (“1: 3”)))))
Ví dụ 2. Hàm INDIRECT và ADDRESS
Bạn có thể sử dụng hàm INDIRECT cùng với hàm ADDRESS để nhận giá trị trong một ô nhất định khi đang chuyển đổi.
Như bạn đã biết, hàm ADDRESS được sử dụng trong Excel để lấy một địa chỉ ô theo số hàng và cột. Ví dụ, công thức = ADDRESS (1,3) trả về chuỗi $C$1 vì C1 là ô ở giao điểm của hàng 1 và cột thứ 3.
Để tạo một tham chiếu ô INDIRECT, bạn chỉ cần lồng hàm ADDRESS vào công thức INDIRECT như sau:
= INDIRECT (ADDRESS (1,3))
Sử dụng INDIRECT với danh sách tùy chọn trong Excel
Bạn có thể sử dụng hàm INDIRECT với danh sách tùy chọn để tạo các danh sách theo mục dạng xếp chồng lên nhau để hiển thị các lựa chọn khác nhau tùy thuộc vào giá trị mà người dùng đã chọn trong danh sách theo mục đầu tiên.
Một danh sách tùy chọn, thực sự rất dễ làm. Những gì nó cần là một vài dải ô được đặt tên, để lưu trữ thành các mục và một công thức đơn giản = INDIRECT (A2), trong đó A2 là ô hiển thị danh sách tùy chọn của bạn.
Để tạo các danh sách 3 cấp phức tạp hơn hoặc thả xuống với các mục nhập nhiều từ, thì bạn sẽ cần một công thức phức tạp hơn một chút với một hàm SUBSTITUTE lồng vào nhau.
Để có hướng dẫn từng bước chi tiết về cách sử dụng INDIRECT với danh sách tùy chọn trong Excel, vui lòng xem hướng dẫn này: Cách tạo danh sách các tùy chọn trong Excel.
Như đã trình bày trong các ví dụ trên, hàm INDIRECT khá hữu ích khi dùng với tham chiếu ô và dãy. Tuy nhiên, không phải tất cả người sử dụng Excel nào cũng háo hức đón nhận nó, chủ yếu là vì việc sử dụng INDIRECT rộng rãi trong các công thức Excel sẽ dẫn đến thiếu minh bạch. Hàm INDIRECT khó đánh giá vì ô mà nó tham chiếu đến không phải là vị trí cuối cùng của giá trị được sử dụng trong công thức, điều này khá rắc rối, đặc biệt khi làm việc với các công thức dài và phức tạp.
Ngoài những điều trên, cũng giống như bất kỳ hàm Excel nào khác, INDIRECT có thể xảy ra lỗi nếu bạn lạm dụng các đối số của hàm. Dưới đây là danh sách các lỗi điển hình nhất:
INDIRECT #REF! lỗi
Thông thường, công thức INDIRECT sẽ trả về #REF! lỗi trong ba trường hợp:
INDIRECT #NAME? lỗi
Đây là trường hợp rõ ràng nhất, ngụ ý rằng có một số lỗi trong tên của hàm công thức, và điều này sẽ dẫn chúng ta đến mục tiếp sau đây 🙂
Sử dụng chức năng INDIRECT trong các ngôn ngữ không phải tiếng Anh
Bạn có thể tò mò muốn biết rằng tên tiếng Anh của hàm INDIRECT đã được dịch sang 14 ngôn ngữ như thế nào, hãy nhìn danh sách bên dưới:
Một vấn đề thường gặp đối với những vùng khu vực không sử dụng tiếng anh thì tên của hàm này không còn là INDIRECT nữa, mà sẽ có các thiết lập khu vực (Regional Settings) khác nhau cho List Separator. Trong cấu hình Windows chuẩn cho Bắc Mỹ và một số quốc gia khác, List Separator mặc định là một dấu phẩy. Trong khi ở các nước Châu Âu, với dấu phẩy được giữ như biểu thức thập phân (Decimal Symbol) thì khi đó List Separator được đặt thành dấu chấm phẩy.
Do đó, khi sao chép một công thức giữa hai vị trí Excel khác nhau, bạn có thể nhận được thông báo lỗi “We found a problem with this data …” bởi vì List separator được sử dụng trong công thức sẽ khác với những gì được đặt trên máy của bạn. Nên nếu bạn gặp lỗi này khi sao chép một số công thức INDIRECT từ hướng dẫn này vào Excel của bạn, chỉ cần thay thế tất cả các dấu phẩy (,) bằng dấu chấm phẩy (;) để làm cho nó cố định.
Để kiểm tra Dấu tách Danh sách và Ký hiệu thập phân được đặt trên máy tính của bạn, hãy mở Bảng điều khiển và đi Region and Language > Additional Settings
Hy vọng rằng, hướng dẫn này đã làm sáng tỏ về cách sử dụng hàm INDIRECT trong Excel. Bây giờ, khi bạn đã biết điểm mạnh và hạn chế của nó, thì đã đến lúc bạn phải bắt tay vào và xem hàm INDIRECT có thể đơn giản hóa các công việc trong Excel như thế nào. Cảm ơn các bạn đã đọc!
Nguồn: Ablebits, dịch và biên tập bởi Blog học Excel Online
Ngoài ra để nâng cao hơn kiến thức về Excel, các bạn có thể tham gia khóa học EX101 – Excel từ cơ bản tới nâng cao dành cho người đi làm của hệ thống Học Excel Online. Trong khóa học này các bạn sẽ được tìm hiểu những kiến thức đầy đủ, có hệ thống về các hàm, các công cụ của Excel, việc ứng dụng các hàm, công cụ đó vào trong công việc. Hiện nay hệ thống có rất nhiều ưu đãi cho bạn khi đăng ký khóa học này. Thông tin chi tiết xem tại: