การใช้INDIRECT()งานที่ดีสำหรับการรักษาตำแหน่งที่แน่นอนของการอ้างอิงหลังจากที่เป้าหมายที่ได้รับการคัดลอกและวาง แต่ปัญหาก็คือว่ามันยังรักษาตำแหน่งที่แน่นอนเมื่อสูตรจะถูกคัดลอกหมายความว่าคุณจะไม่สามารถขยายสูตรเพื่อให้ครอบคลุมที่มีขนาดใหญ่ ช่วงเมื่อใช้งาน
ทางออกคือการรวมINDIRECT()กับROW(), COLUMN()และADDRESS()เพื่อสร้างตำแหน่งของเซลล์เป้าหมายโดยทางโปรแกรมขึ้นอยู่กับเซลล์ของสูตร
ในกรณีที่ง่ายที่สุดเช่นเมื่อเซลล์เป้าหมายมีคอลัมน์คงที่และอยู่ในแถวเดียวกันกับสูตรเสมอสามารถทำได้ดังนี้:
INDIRECT("A"&ROW())
เพื่อที่จะแนะนำการชดเชยแบบไดนามิกจากเซลล์สูตรคุณสามารถใช้ADDRESS():
INDIRECT(ADDRESS(ROW()-1,COL()-4))
ในสกรีนช็อตด้านล่างสูตรในB1:E1ถูกขยายไปที่ 16 แถวด้านล่างจากนั้นลำดับหมายเลขในA7:A10จะถูกตัดและวาง 6 เซลล์ลง อย่างที่คุณเห็นสูตรที่ง่ายที่สุดจะถูกปรับและยกเลิกการซิงโครไนซ์โดยอัตโนมัติในขณะที่การใช้งานแบบไร้เดียงสาINDIRECT()ไม่ได้คาดการณ์ในทุกแถวอย่างถูกต้อง แต่สูตรสองสูตรที่ใช้INDIRECT()พร้อมกับการดึงโปรแกรม
