ระบบการอ้างอิงตำแหน่งแบบ R1C1 Notation หรือที่ภาษาไทยจะเป็น สัญกรณ์ R1C1 หรือเรียกอีกอย่างว่า Relative Notation (ตรงนี้อย่าสับสนกับ Relative References)
เชื่อหรือไม่ว่า สมัยที่ไมโครซอฟต์ทำ Multiplan สเปรดชีต หรือ ตารางคำนวณรุ่นแรก ที่พยายามออกมาแข่งกับ VisiCalc ซึ่งเป็นเบอร์หนึ่งในซอฟต์แวร์ประเภทตารางคำนวณในขณะนั้น ทางไมโครซอฟต์ตัดสินใจสู้ด้วยการเสนอระบบการอ้างอิง R1C1 แต่น่าเสียดายที่หลังจาก Multiplan ได้ไม่ถึงปี ทาง IBM ก็เอา Lotus 1-2-3 ออกมาวางจำหน่าย และกลายเป็นผู้นำในเรื่องสเปรดชีตแทน
เมื่อ Multiplan โดนยกเลิกและเปลี่ยนไปพัฒนา Excel แทน ทางไมโครซอฟต์ก็เปลี่ยนมาเป็นระบบ A1 Notation (อาจจะเพราะเห็นว่าผู้ใช้งานส่วนใหญ่จะคุ้นเคยกับระบบนี้จาก Lotus 1-2-3) แต่ R1C1 ก็ยังไม่หายไปไหน และในขณะที่ผู้ใช้งาน Excel ส่วนใหญ่ไม่รู้ด้วยซ้ำว่าโลกนี้มีการอ้างอิงแบบ R1C1 อยู่ด้วย แต่บางคนใช้งาน R1C1 เวลาเขียนโค้ดใน VBA โดยให้เหตุผลว่าสะดวกกว่า A1 Notation เพราะสะดวกในการตรวจสอบและค้นหาสูตรที่ผิดพลาดเวลาที่เราเขียนโค้ดโดยให้ความสำคัญกับตำแหน่งสัมพัทธ์ของเซลล์ (Relative References) มากกว่าตำแหน่งสัมบูรณ์ (Absolute References) ซึ่งในการเขียน VBA จะเห็นการเขียนอ้างอิงตำแหน่งเซลล์ในแบบนี้อยู่
เปลี่ยนมาใช้ R1C1 Notation
หากท่านต้องการให้ Excel แสดงการอ้างอิงแบบนี้ ให้ไปที่ Options เลือกแท็บ Formulas แล้วดูที่หัวข้อ Working with formulas ให้เลือกติ๊กถูกที่ R1C1 reference style
การเปลี่ยนนี้จะไม่กระทบต่อการอ้างอิงตำแหน่งในสูตร แค่แสดงลักษณะการอ้างอิงเท่านั้น
ระบบอ้างอิง R1C1
- ตำแหน่งของแถว จะอ้างอิงเป็นตัวอักษร R ตามด้วยตัวเลข R1 R2 R3 ไปเรื่อย ๆ จากบนลงล่าง
- ตำแหน่งของคอลัมน์ จะอ้างอิงเป็นตัวอักษร C ตามด้วยตัวเลข C1 C2 C3 ไปเรื่อย ๆ จากซ้ายไปขวา
- การอ้างอิงตำแหน่งเซลล์หรือช่อง ใช้ตำแหน่งคอลัมน์กับแถว เช่น R1C1 R2C3 R3C3
โดยทั่วไป ไม่ค่อยมีอะไรต่างจากระบบ A1 คือแทนที่จะใช้ตัวอักษรโรมันเป็นตัวระบุคอลัมน์ ระบบ R1C1 จะใช้ตัวเลขเป็นตัวระบุตำแหน่ง โดยมีการบอกว่าจะเป็น R – Row หรือ แถว กับ C – Column หรือ คอลัมน์ (สดมป์)
อ้อ ที่ต่างกันอีกอย่างก็คือ A1 จะระบุคอลัมน์ก่อนแล้วจึงเป็นแถว นั่นคือ คอลัมน์ A แถวที่ 1 แบบนี้เป็นต้น แต่ถ้าเป็นแบบ R1C1 จะเป็น แถว แล้วจึงเป็น คอลัมน์ นั่นคือ แถวที่ 1 คอลัมน์ที่ 1 แบบนี้เป็นต้น
R1C1 Notation – Relative References
มาถึงจุดเด่น ที่ทำให้คนที่ไม่คุ้นเคยงงบ้างดีกว่า สิ่งที่จะแตกต่างจาก A1 ชัดเจนที่สุดคือการอ้างอิงแบบ สัมพัทธ์ของเซลล์ (Relative References) หรือการอ้างอิงไปยังเซลล์ที่มีจำนวนแถวหรือคอลัมน์ที่สัมพันธ์กับเซลล์ที่ใช้ในสูตรได้
R1C1 จะมีวิธีระบุความสัมพัทธ์ของเซลล์โดยใส่วงเล็บเหลี่ยมที่ลำดับของแถวหรือคอลัมน์ที่อ้างอิง
- ถ้าเป็นการใส่ตัวเลข จะหมายถึง ไปด้านขวา หรือ ด้านล่าง จากตำแหน่งเดิม (คือ +)
- ถ้าเป็นการใส่เครื่องหมายลบหน้าตัวเลข จะหมายถึง ไปด้านซ้าย หรือ ขึ้นด้านบน จากตำแหน่งเดิม
ยกตัวอย่างเช่น
เราตั้งต้นที่ R3C5 (ก็คือ E3 ในแบบ A1)
ถ้าเราเขียนในช่อง R3C5 ว่า =R[2]C[3] จะหมายถึง ขยับจาก R3C5 ไปทางด้านล่าง 2 แถว และไปทางขวา 3 คอลัมน์ จะได้เป็น R5C8
ไม่งงนะ ทุกคน นี่คือจุดแตกต่างจาก A1 ที่คนไม่คุ้นเคยอาจงงนิดหน่อย แต่สักพักจะเข้าใจได้แน่นอน
ในเซลล์เดิม R3C5 ถ้าเราเขียนสูตรโดยอ้างอิงตำแหน่งว่า =RC[-2] จะหมายถึง ให้ขยับคอลัมน์ไปทางซ้าย (เพราะมีเครื่องหมายลบ) 2 คอลัมน์ โดยที่อยู่ในแถวเดิม นั่นคือ จะเป็นR3C3
หรือถ้าเราเขียนสูตรว่า =R[2]C1 จะหมายถึง R5C1 คือ ขยับไปที่ที่คอลัมน์ 1 แต่ให้ลงไปข้างล่าง 2 แถว
TIPS: โปรดสังเกต ถ้าใช้วงเล็บเหลี่ยมกำกับตัวเลข จะไม่มีตำแหน่งด้วยตัวเอง ต้องอ้างอิงจากตำแหน่งเดิมเท่านั้น
สรุป
ตอนที่ DataRevol.com หัดใช้ R1C1 ก็รู้สึกแปลก ๆ อยู่พอสมควรด้วยความที่ไม่คุ้นเคย แต่ผ่านไปสักพักก็พบว่าเป็นระบบที่ค่อนข้างยืดหยุ่นในการทำงานพอสมควร ซึ่ง ในอนาคตเมื่อเขียนถึงเรื่อง VBA แล้วจะเห็นคุณประโยชน์ของการอ้างอิงแบบนี้
ตอนนี้จำง่าย ๆ ว่า มันไม่ได้ซับซ้อนอะไร R คือ แถว C คือ คอลัมน์ ถ้าเราเขียน R3C5 คือการอ้างอิงตำแหน่งแบบคงที่ แต่ถ้าเราใส่วงเล็บเหลี่ยมเข้าไป หมายถึงการระบุการเคลื่อนตัวจากตำแหน่งนั้นทันที
ในการอ้างอิงแถวที่อยู่ด้านล่างและคอลัมน์ที่อยู่ข้างหน้าเซลล์ที่ใช้งานอยู่ คุณสามารถใช้จำนวนบวกได้
หากต้องการอ้างอิงถึงแถวที่อยู่ด้านบนและคอลัมน์ที่อยู่ด้านหลังเซลล์ที่ใช้งานอยู่ คุณสามารถใช้ตัวเลขติดลบได้
หากใช้หมายเลขแถวหรือคอลัมน์โดยไม่มีวงเล็บเหลี่ยม Excel จะถือว่าเป็นข้อมูลอ้างอิงแบบสัมบูรณ์
ถ้าหากเขียนถึงการใช้โค้ด VBA จะอธิบายเพิ่มเติมมากกว่านี้ แต่สำหรับผู้ใช้งาน Excel ทั่วไป DataRevol.com ยังคงแนะนำให้ใช้ A1 เหมือนเดิม
Discover more from Data Revol
Subscribe to get the latest posts sent to your email.