INDIRECT เป็นฟังก์ชันที่ดู “งง ๆ” อย่างหนึ่ง คือ โดยตัวมันเองเป็นเพียงแค่การเปลี่ยนข้อความให้เป็นตัวอ้างอิง คือ จะเป็นตัวบอกว่า ให้ไปดูที่ เซลล์ หรือว่า ช่วง ไหนหรือ ชีต ไหน เป็นฟังก์ชันที่ตอนรู้จักแรก ๆ ก็ออกจะงงอยู่ว่าเจ้าฟังก์ชันนี้มันใช้ทำอะไรกันแน่ ทำไมไม่อ้างอิงไปตรง ๆ เลย ต้องมาอ้างอิงแบบอ้อมผ่านเจ้าฟังก์ชันนี้ทำไม
รูปแบบการเขียนฟังก์ชัน INDIRECT
INDIRECT(ref_text, [a1])
ref_text การอ้างอิงไปยังเซลล์ที่มีการอ้างอิง หรือ ชื่อที่กําหนดเป็นการอ้างอิง แต่ ต้องเตือนก่อนว่า ในกรณีที่ ref_text เป็นการอ้างอิงไปยังเวิร์กบุ๊กอื่น ถ้าเวิร์กบุ๊กนั้นไม่ได้เปิดไว้ด้วย จะส่งกลับค่าผิดพลาด #REF!
[a1] คือการอ้างอิงตำแหน่งเซลล์แบบ A1 ซึ่งจะระบุเป็น TRUE หรือ FALSE ซึ่งถ้าไม่ระบุจะเป็นใช้ค่าตั้งต้นคือ TRUE หมายถึงการอ้างอิงแบบ A1 แต่เราจะระบุ FALSE เพื่อกำหนดการระบุตำแหน่งแบบ R1C1 ก็ได้
เปลี่ยนข้อความให้เป็นการอ้างอิง
นิยามง่าย ๆ ของฟังก์ชันนี้ก็คือ “เปลี่ยนข้อความให้เป็นการอ้างอิง” เขียนแบบนี้อาจจะยังนึกภาพไม่ออก โปรดดูภาพประกอบ
ที่ D4 ซึ่งทำไฮไลต์สีเหลืองให้เห็นเด่นชัดนั้น แสดงผลเป็น 666
ในเซลล์ D4 นี้ เขียนสูตรไว้ว่า
=INDIRECT(A1)
นั่นคือ ใช้ฟังก์ชัน INDIRECT ให้ชี้ไปที่ A1 ตรงนี้คือการอ้างอิงตำแหน่ง A1
แต่ ที่ A1 ก็ไม่ใช่ 666 แต่เป็น B1
B1 นี่แหละ คือ “ข้อความ” (TEXT) ซึ่งจะโดนเปลี่ยนให้เป็นการอ้างอิงตำแหน่งด้วย INDIRECT
ดังนั้น ที่ D4 จึงแสดงผลเป็น 666 ตามค่าที่อยู่ใน B1 เพราะการอ้างอิงตำแหน่งที่ A1 ก็คือการเปลี่ยนทางมาเป็น B1 ด้วยข้อความที่อยู่ใน A1
นี่คือความเจ๋งของฟังก์ชันนี้ ที่ทำบางคนงงเมื่อแรกใช้งาน มันคือการใช้เปลี่ยนเส้นทางการอ้างอิง โดยอาศัย “ข้อความ” เพื่อใช้เป็นตัวอ้างอิง
เพื่อให้เห็นความเป็น “ข้อความ” ที่ชัดเจนอีกอย่าง เราคงจำได้ว่า เราสามารถ เชื่อม หรือ รวมข้อความเข้าด้วยกันได้ เช่น ถ้าใน A1 พิมพ์คำว่า “Def” และใน A2 พิมพ์คำว่า “Excel” ถ้าเราพิมพ์ =A1&A2 เราจะได้ผลลัพธ์เป็น “DefExcel”
คุณสมบัตินี้ก็ใช้ร่วมกับ INDIRECT ได้เช่นกัน!
ที่ D4 เราเปลี่ยนค่าในสูตรเล็กน้อย ให้เป็น
=INDIRECT("B"&B5)
“B”&B5 ถ้าเป็นการเขียนสูตรทั่วไป ผลลัพธ์ก็คือ B ตามด้วยค่าที่อยู่ใน B5 ซึ่งในที่นี้ก็คือ 3 ผลลัพธ์จาก “B”&B5 ก็คือ B3
และ ค่าใน B3 คือ Def Excel
การใช้การอ้างอิงแบบ R1C1
ในไวยากรณ์หรือรูปแบบการเขียนสูตรสำหรับฟังก์ชันนี้จะมีตัวเลือกอีกอย่างคือ เราจะเลือกการอ้างอิงเป็น A1 หรือ R1C1 ก็ได้ ซึ่ง เรา ๆ ท่าน ๆ อาจจะไม่ค่อยได้ใช้การอ้างอิง R1C1 เท่าไหร่นัก แต่การอ้างอิงแบบนี้ก็มีประโยชน์ในการทำงานบางอย่าง
การอ้างอิง R1C1 นี้ก็คือการระบุไปเลยว่าแถว (Row) ที่เท่าไหร่ คอลัมน์ (Column) ที่เท่าไหร่
ยกตัวอย่าง เราเขียนสูตร
=INDIRECT(A2,FALSE)
คือให้ฟังก์ชันไปดูที่ A2 โดยกำหนดรูปแบบการอ้างอิงเป็น R1C1 ซึ่งใน A3 เราใส่ค่า R3C2
R3 คือ แถวที่ 3
C2 คือ คอลัมน์ที่ 2
ซึ่งในกรณีนี้จะหมายถึง B3 ซึ่งจะมีค่า Def Excel
แต่ถ้าในสูตรไม่ได้ใส่ False กำกับไว้ ผลที่ออกมาจะเป็น 0 หรืออ้างอิงผิดพลาด
อ้างอิงด้วยการตั้งชื่อช่วง
สมมติว่า เราตั้งชื่อ WASP ให้หมายถึง B1 (ขอยกตัวอย่างเป็นเซลล์เดียว ไม่ใช่ช่วงก็แล้วกัน เพื่อให้แสดงผลง่าย ๆ)
=INDIRECT(A2)
ในที่นี้ A2 เก็บข้อมูลว่า WASP ซึ่งเป็นชื่อที่ตั้ง ก็จะเปลี่ยนเส้นทางการแสดงค่าไปยัง B1 ที่ได้ตั้งชื่อว่า WASP ทำให้ได้ผลลัพธ์เป็น 666 แต่ถ้าตรงนี้ไม่ได้เป็นชื่อที่ตั้งไว้ มันจะขึ้น #REF! ซึ่งหมายถึงอ้างอิงตำแหน่งผิดพลาด
แหล่งอ้างอิง: INDIRECT function – Microsoft Support