ตัวอย่างนี้คล้ายกับตัวอย่างที่ใช้สูตร Index แต่เลือกใช้สูตร Offset แทน เพื่อทำให้ส่งค่าไปยังเซลล์ใดก็ได้ ไม่ต้องจำกัดขอบเขต
ชุดคำสั่ง : SendData
สิ่งที่ต้องการ
ส่งตัวเลข 777 หรือค่าใดๆที่บันทึกไว้ในเซลล์ B4 ไปเก็บไว้ในตาราง โดยใช้ตำแหน่งอ้างอิงจากเซลล์ D1 ว่า เซลล์ที่ต้องการรับข้อมูล อยู่ห่างจากเซลล์ D1 เป็นระยะทาง 5 row และห่าง 2 column
ขั้นตอนการสร้างงาน
- สร้าง Range Name ชื่อ Source ให้กับเซลล์ B4
- สร้าง Range Name ชื่อ Ref ให้กับเซลล์ D1
- สร้าง Formula Name ชื่อ Target ให้เป็นสูตร
=OFFSET( Ref, $B$2, $B$3 )
วิเคราะห์สูตร
Target
=OFFSET( Ref, $B$2, $B$3 )
สูตรนี้ทำงานคล้ายกับ Index เพียงแต่กำหนดตำแหน่ง Row และ Column ถัดไปจากตำแหน่งเซลล์ชื่อ Ref ซึ่งตำแหน่ง Row และ Column นี้เป็นได้ทั้งค่าบวก ลบ และศูนย์ (ถ้าตำแหน่งอยู่เหนือเซลล์ Ref หรืออยู่ด้านซ้ายเซลล์ Ref ให้กำหนดเป็นเลขลบ)
เมื่อกำหนดตำแหน่ง Row และ Column ลงไปในเซลล์ B2 และ B3 ตามลำดับ จะส่งผลให้ข้อมูลจาก Source ส่งไปที่ MyVar ต่อไปยัง Target แล้วสูตร Offset จะเป็นตัวกำหนดตำแหน่ง Row และ Column ของเซลล์ที่รับค่าในที่สุด
ตัวอย่างนี้ แม้จะไม่จำกัดขอบเขตว่าต้องอยู่ภายในตารางที่กำหนด แต่อย่างไรก็ตามยังต้องอยู่ภายในชีท จึงต้องระวังตัวเลขตำแหน่งเซลล์ว่า อย่าใช้ตำแหน่งที่เป็นไปไม่ได้ เช่น กำหนดค่า B2 เป็นเลข -100 ซึ่งย้อนขึ้นไปด้านบนเหนือ row ที่ 1 เสียอีก