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