สารบัญ
ในบทช่วยสอนนี้ เราจะอธิบายเกี่ยวกับหนึ่งในผู้อาศัยที่ลึกลับที่สุดในจักรวาลของ Excel นั่นคือฟังก์ชัน OFFSET
OFFSET คืออะไร ในเอ็กเซล? โดยสรุป สูตร OFFSET จะส่งกลับการอ้างอิงไปยังช่วงที่หักล้างจากเซลล์เริ่มต้นหรือช่วงของเซลล์ตามจำนวนแถวและคอลัมน์ที่ระบุ
ฟังก์ชัน OFFSET อาจค่อนข้างยุ่งยากในการรับ ดังนั้น มาดูคำอธิบายทางเทคนิคสั้นๆ ก่อน (ฉันจะทำให้ดีที่สุดเพื่อให้เข้าใจง่าย) จากนั้นเราจะพูดถึงวิธีที่มีประสิทธิภาพที่สุดสองสามวิธีในการใช้ OFFSET ใน Excel
ฟังก์ชัน OFFSET ของ Excel - ไวยากรณ์และการใช้งานพื้นฐาน
ฟังก์ชัน OFFSET ใน Excel จะส่งกลับเซลล์หรือช่วงของเซลล์ที่เป็นจำนวนแถวและคอลัมน์ที่กำหนดจากเซลล์หรือช่วงที่กำหนด
ไวยากรณ์ของฟังก์ชัน OFFSET มีดังนี้:
OFFSET(reference, rows, cols, [height], [width])อาร์กิวเมนต์ 3 ตัวแรกจำเป็นและ 2 ตัวสุดท้ายเป็นตัวเลือก อาร์กิวเมนต์ทั้งหมดสามารถอ้างอิงไปยังเซลล์อื่นหรือผลลัพธ์ที่ส่งคืนโดยสูตรอื่น
ดูเหมือนว่า Microsoft จะใช้ความพยายามอย่างดีในการใส่ความหมายบางอย่างลงในชื่อของพารามิเตอร์ และพวกเขาให้คำใบ้เกี่ยวกับสิ่งที่คุณ ควรจะระบุในแต่ละข้อ
อาร์กิวเมนต์ที่จำเป็น:
- การอ้างอิง - เซลล์หรือช่วงของเซลล์ที่อยู่ติดกันซึ่งคุณใช้เป็นฐานของการชดเชย คุณสามารถคิดว่ามันเป็นจุดเริ่มต้น
- แถว - จำนวนแถวคอลัมน์ (A):
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
ฉันรู้ว่าสูตรนี้ดูงุ่มง่ามนิดหน่อย แต่ก็ใช้ได้ :)
ตัวอย่างที่ 2 วิธีการค้นหาจากด้านบนใน Excel
เช่นเดียวกับในกรณีที่ VLOOKUP ไม่สามารถมองไปทางซ้ายได้ ฟังก์ชัน HLOOKUP ในแนวนอนไม่สามารถมองขึ้นด้านบนเพื่อส่งกลับค่าได้
หากคุณต้องการสแกนแถวบนเพื่อหารายการที่ตรงกัน สูตร OFFSET MATCH สามารถช่วยได้อีกครั้ง แต่คราวนี้คุณจะต้องปรับปรุงด้วยฟังก์ชัน COLUMNS เช่น:
OFFSET( lookup_table , return_row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, COLUMNS( lookup_table )) , 0) -1, 1, 1)ตำแหน่ง:
- Lookup_row_offset - จำนวนแถวที่จะย้ายจากจุดเริ่มต้นไปยังแถวการค้นหา
- Return_row_offset - จำนวนแถวที่จะย้ายจากจุดเริ่มต้นไปยังแถวที่กลับ
สมมติว่าตารางการค้นหาคือ B4:F5 และค่าการค้นหาอยู่ในเซลล์ B1 สูตรจะเป็นดังนี้:
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
ในกรณีของเรา ค่าชดเชยแถวการค้นหาคือ 1 เนื่องจากช่วงการค้นหาของเราอยู่ห่างจากจุดเริ่มต้น 1 แถว ค่าชดเชยแถวกลับเป็น 0 เนื่องจากเรากำลังส่งคืนการจับคู่จากแถวแรกในตาราง
ตัวอย่างที่ 3 การค้นหาแบบสองทาง (ตามค่าคอลัมน์และแถว)
การค้นหาแบบสองทางจะส่งกลับค่าตามการจับคู่ทั้งในแถวและคอลัมน์ และคุณสามารถใช้สิ่งต่อไปนี้สูตรอาร์เรย์การค้นหาสองครั้งเพื่อค้นหาค่าที่จุดตัดของแถวและคอลัมน์ที่ต้องการ:
=OFFSET( ตารางการค้นหา , MATCH( ค่าการค้นหาแถว , OFFSET( ตารางการค้นหา , 0, 0, ROWS( ตารางการค้นหา ), 1), 0) -1, MATCH( ค่าการค้นหาคอลัมน์ , OFFSET( ตารางการค้นหา , 0, 0, 1, COLUMNS( ตารางค้นหา )), 0) -1)ระบุว่า:
- ตารางค้นหาคือ A5:G9
- ค่าที่จะจับคู่ในแถวอยู่ใน B2
- ค่าที่จะจับคู่ในคอลัมน์อยู่ใน B1
คุณจะได้สูตรการค้นหาสองมิติต่อไปนี้:
=OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, ROWS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, COLUMNS(A5:G9)), 0) -1)
ไม่ใช่สิ่งที่จำง่ายที่สุดใช่ไหม นอกจากนี้ นี่เป็นสูตรอาร์เรย์ ดังนั้นอย่าลืมกด Ctrl + Shift + Enter เพื่อป้อนอย่างถูกต้อง
แน่นอนว่าสูตร OFFSET ที่ยาวนี้ไม่ใช่ วิธีเดียวที่เป็นไปได้ในการค้นหาสองครั้งใน Excel คุณจะได้รับผลลัพธ์เดียวกันโดยใช้ VLOOKUP & ฟังก์ชัน MATCH, SUMPRODUCT หรือ INDEX & การแข่งขัน. มีแม้แต่วิธีที่ไม่มีสูตร - เพื่อใช้ช่วงที่มีชื่อและตัวดำเนินการทางแยก (ช่องว่าง) บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ปัญหาทางเลือกทั้งหมดโดยละเอียด: วิธีการค้นหาแบบสองทางใน Excel
ฟังก์ชัน OFFSET - ข้อจำกัดและทางเลือกต่างๆ
หวังว่าตัวอย่างสูตรในหน้านี้จะหายไปบ้าง วิธีใช้ OFFSET ใน Excel อย่างไรก็ตาม เพื่อใช้ประโยชน์จากฟังก์ชันในสมุดงานของคุณอย่างมีประสิทธิภาพ คุณไม่ควรเป็นเพียงรู้จุดแข็งของมัน แต่ก็ระวังจุดอ่อนของมันด้วย
ข้อจำกัดที่สำคัญที่สุดของฟังก์ชัน OFFSET ของ Excel มีดังนี้:
- เช่นเดียวกับฟังก์ชันผันผวนอื่นๆ OFFSET คือ ฟังก์ชันที่ต้องใช้ทรัพยากรมาก เมื่อใดก็ตามที่มีการเปลี่ยนแปลงในแหล่งข้อมูล สูตร OFFSET ของคุณจะถูกคำนวณใหม่ ทำให้ Excel ไม่ว่างอีกต่อไป นี่ไม่ใช่ปัญหาสำหรับสูตรเดียวในสเปรดชีตขนาดเล็ก แต่ถ้ามีสูตรหลายสิบหรือหลายร้อยสูตรในสมุดงาน Microsoft Excel อาจใช้เวลาในการคำนวณใหม่
- สูตร OFFSET ของ Excel นั้น ยากต่อการตรวจทาน เนื่องจากการอ้างอิงที่ส่งกลับโดยฟังก์ชัน OFFSET เป็นแบบไดนามิก สูตรขนาดใหญ่ (โดยเฉพาะอย่างยิ่งกับ OFFSET ที่ซ้อนกัน) อาจค่อนข้างยุ่งยากในการแก้ไขจุดบกพร่อง
ทางเลือกอื่นในการใช้ OFFSET ใน Excel
ดังที่มักเป็น กรณีใน Excel ผลลัพธ์เดียวกันสามารถทำได้หลายวิธี ดังนั้น ต่อไปนี้คือทางเลือกที่สวยงามอีกสามทางเลือกสำหรับ OFFSET
- ตาราง Excel
ตั้งแต่ Excel 2002 เป็นต้นมา เรามีคุณลักษณะที่ยอดเยี่ยมอย่างแท้จริง - ตาราง Excel ที่ครบถ้วน ซึ่งตรงข้ามกับ ช่วงปกติ หากต้องการสร้างตารางจากข้อมูลที่มีโครงสร้าง คุณเพียงคลิก แทรก > ตาราง บนแท็บ หน้าแรก หรือกด Ctrl + T
โดยการป้อนสูตรในเซลล์เดียวในตาราง Excel คุณสามารถสร้างสิ่งที่เรียกว่า "คอลัมน์จากการคำนวณ" คัดลอกสูตรไปยังเซลล์อื่นๆ ทั้งหมดในคอลัมน์นั้นโดยอัตโนมัติและปรับค่าสูตรสำหรับแต่ละแถวในตาราง
ยิ่งไปกว่านั้น สูตรใดๆ ที่อ้างถึงข้อมูลของตารางจะปรับโดยอัตโนมัติเพื่อรวมแถวใหม่ใดๆ ที่คุณเพิ่มลงในตารางหรือไม่รวมแถวที่คุณลบ ในทางเทคนิค สูตรดังกล่าวทำงานในคอลัมน์หรือแถวของตาราง ซึ่งเป็น ช่วงไดนามิก โดยธรรมชาติ แต่ละตารางในสมุดงานมีชื่อที่ไม่ซ้ำกัน (ชื่อเริ่มต้นคือ Table1, Table2 เป็นต้น) และคุณมีอิสระที่จะเปลี่ยนชื่อตารางของคุณผ่านแท็บ การออกแบบ > คุณสมบัติ กลุ่ม > ; ชื่อตาราง กล่องข้อความ
ภาพหน้าจอต่อไปนี้แสดงสูตร SUM ที่อ้างถึงคอลัมน์ โบนัส ของ Table3 โปรดทราบว่าสูตรประกอบด้วย ชื่อคอลัมน์ ของตาราง แทนที่จะเป็นช่วงของเซลล์
- ฟังก์ชัน Excel INDEX
แม้ว่าจะไม่เหมือนกับ OFFSET ทุกประการ แต่ก็สามารถใช้ Excel INDEX เพื่อสร้างการอ้างอิงช่วงไดนามิกได้ ฟังก์ชัน INDEX ไม่เปลี่ยนแปลง ซึ่งแตกต่างจาก OFFSET ดังนั้นจึงไม่ทำให้ Excel ของคุณช้าลง
- ฟังก์ชัน Excel INDIRECT
การใช้ฟังก์ชัน INDIRECT คุณสามารถสร้างช่วงไดนามิกได้ การอ้างอิงจากหลายแหล่ง เช่น ค่าเซลล์ ค่าเซลล์และข้อความ ช่วงที่ตั้งชื่อ นอกจากนี้ยังสามารถอ้างถึงแผ่นงานหรือสมุดงาน Excel อื่นแบบไดนามิก คุณสามารถดูตัวอย่างสูตรเหล่านี้ได้ในบทช่วยสอนเกี่ยวกับฟังก์ชัน Excel INDIRECT
คุณจำคำถามที่ถามในตอนต้นของบทช่วยสอนนี้ได้หรือไม่ - OFFSET ใน Excel คืออะไร ฉันหวังว่าตอนนี้คุณคงรู้คำตอบแล้ว :) หากคุณต้องการประสบการณ์จริงเพิ่มเติม โปรดดาวน์โหลดสมุดงานแบบฝึกหัดของเรา (โปรดดูด้านล่าง) ซึ่งมีสูตรทั้งหมดที่กล่าวถึงในนี้ หน้าและทำวิศวกรรมย้อนกลับเพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้น ขอบคุณที่อ่าน!
แบบฝึกหัดสำหรับดาวน์โหลด
ตัวอย่างสูตร OFFSET (ไฟล์ .xlsx)
เพื่อย้ายจากจุดเริ่มต้นขึ้นหรือลง ถ้าแถวเป็นจำนวนบวก สูตรจะเลื่อนไปใต้การอ้างอิงเริ่มต้น ในกรณีที่เป็นจำนวนลบ สูตรจะอยู่เหนือการอ้างอิงเริ่มต้น - Cols - จำนวนคอลัมน์ที่คุณต้องการใช้สูตร เพื่อย้ายจากจุดเริ่มต้น เช่นเดียวกับแถว cols สามารถเป็นค่าบวก (ทางด้านขวาของข้อมูลอ้างอิงเริ่มต้น) หรือค่าลบ (ทางด้านซ้ายของข้อมูลอ้างอิงเริ่มต้น)
อาร์กิวเมนต์ทางเลือก:
- ความสูง - จำนวนแถวที่จะส่งคืน
- ความกว้าง - จำนวนคอลัมน์ที่จะส่งคืน
ทั้งความสูงและ อาร์กิวเมนต์ความกว้างต้องเป็นจำนวนบวกเสมอ หากละเว้นค่าใดค่าหนึ่ง ค่าดีฟอลต์คือความสูงหรือความกว้างของ reference
หมายเหตุ OFFSET เป็นฟังก์ชันที่ไม่แน่นอนและอาจทำให้เวิร์กชีตของคุณทำงานช้าลง ความช้าเป็นสัดส่วนโดยตรงกับจำนวนเซลล์ที่คำนวณใหม่
และตอนนี้ เราจะแสดงทฤษฎีด้วยตัวอย่างสูตร OFFSET ที่ง่ายที่สุด
ตัวอย่างสูตร OFFSET ของ Excel
ต่อไปนี้คือตัวอย่างสูตร OFFSET อย่างง่ายที่ส่งกลับการอ้างอิงเซลล์ตามจุดเริ่มต้น แถว และ cols ที่คุณระบุ:
=OFFSET(A1,3,1)
สูตรบอกให้ Excel รับเซลล์ A1 เป็น จุดเริ่มต้น (การอ้างอิง) จากนั้นย้าย 3 แถวลง (อาร์กิวเมนต์แถว) และ 1 คอลัมน์ไปทางซ้าย (อาร์กิวเมนต์ cols) ผลลัพธ์ที่ได้ สูตร OFFSET นี้จะส่งกลับค่าในเซลล์ B4
รูปภาพทางด้านซ้ายแสดงเส้นทางของฟังก์ชันและภาพหน้าจอทางด้านขวาแสดงให้เห็นว่าคุณสามารถใช้สูตร OFFSET กับข้อมูลในชีวิตจริงได้อย่างไร ข้อแตกต่างเพียงอย่างเดียวระหว่างสองสูตรคือ สูตรที่สอง (ด้านขวา) มีการอ้างอิงเซลล์ (E1) ในอาร์กิวเมนต์ของแถว แต่เนื่องจากเซลล์ E1 มีหมายเลข 3 และหมายเลขเดียวกันทุกประการปรากฏในอาร์กิวเมนต์แถวของสูตรแรก ทั้งสองจะส่งคืนผลลัพธ์ที่เหมือนกัน นั่นคือค่าใน B4
สูตร OFFSET ของ Excel - สิ่งที่ต้องจำ
- ฟังก์ชัน OFFSET คือ Excel จะไม่ย้ายเซลล์หรือช่วงใดๆ แต่จะส่งคืนค่าอ้างอิงเท่านั้น
- เมื่อสูตร OFFSET ส่งกลับค่าช่วง ของเซลล์ อาร์กิวเมนต์แถวและ cols จะอ้างอิงถึงเซลล์บนซ้ายใน Rage ที่ส่งคืนเสมอ
- อาร์กิวเมนต์อ้างอิงต้องมีเซลล์หรือช่วงของเซลล์ที่อยู่ติดกัน มิฉะนั้น สูตรของคุณจะส่งกลับ #VALUE! ข้อผิดพลาด
- หากแถวและ/หรือ cols ที่ระบุย้ายการอ้างอิงไปที่ขอบของสเปรดชีต สูตร OFFSET ของ Excel จะส่งกลับ #REF! ข้อผิดพลาด
- สามารถใช้ฟังก์ชัน OFFSET ภายในฟังก์ชัน Excel อื่นๆ ที่ยอมรับการอ้างอิงเซลล์/ช่วงในอาร์กิวเมนต์
ตัวอย่างเช่น หากคุณพยายามใช้สูตร =OFFSET(A1,3,1,1,3)
ด้วยตัวของมันเอง มันจะส่ง #VALUE! ข้อผิดพลาด เนื่องจากช่วงที่จะส่งคืน (1 แถว 3 คอลัมน์) ไม่พอดีกับเซลล์เดียว อย่างไรก็ตาม หากคุณฝังลงในฟังก์ชัน SUM เช่นสิ่งนี้:
=SUM(OFFSET(A1,3,1,1,3))
สูตรจะส่งกลับผลรวมของค่าในช่วง 1 แถวคูณ 3 คอลัมน์ นั่นคือ 3 แถวด้านล่างและ 1 คอลัมน์ทางด้านขวาของเซลล์ A1 นั่นคือ ค่าทั้งหมดในเซลล์ B4:D4
เหตุใดฉันจึงใช้ OFFSET ใน Excel
เมื่อคุณทราบแล้วว่าฟังก์ชัน OFFSET ทำหน้าที่อะไร คุณอาจ ถามตัวเองว่า "ทำไมต้องใช้มัน" ทำไมไม่เขียนข้อมูลอ้างอิงโดยตรงเช่น B4:D4 ล่ะ
สูตร OFFSET ของ Excel นั้นดีมากสำหรับ:
การสร้างช่วงไดนามิก : การอ้างอิงเช่น B1:C4 เป็นแบบคงที่ ซึ่งหมายความว่าจะอ้างอิงถึงช่วงที่กำหนดเสมอ แต่งานบางอย่างทำได้ง่ายกว่าด้วยช่วงไดนามิก โดยเฉพาะอย่างยิ่งเมื่อคุณทำงานกับข้อมูลที่เปลี่ยนแปลง เช่น คุณมีแผ่นงานที่เพิ่มแถวหรือคอลัมน์ใหม่ทุกสัปดาห์
การรับช่วงจากเซลล์เริ่มต้น บางครั้ง คุณอาจไม่ทราบที่อยู่จริงของช่วง แม้ว่าคุณจะรู้ว่ามันเริ่มต้นจากเซลล์ใดเซลล์หนึ่งก็ตาม ในสถานการณ์เช่นนี้ การใช้ OFFSET ใน Excel เป็นวิธีที่ถูกต้อง
วิธีใช้ฟังก์ชัน OFFSET ใน Excel - ตัวอย่างสูตร
ฉันหวังว่าคุณจะไม่เบื่อกับทฤษฎีมากมาย . อย่างไรก็ตาม ตอนนี้เรากำลังเข้าสู่ส่วนที่น่าตื่นเต้นที่สุด นั่นคือการใช้ฟังก์ชัน OFFSET ในทางปฏิบัติ
ฟังก์ชัน OFFSET และ SUM ของ Excel
ตัวอย่างที่เราพูดถึงเมื่อสักครู่นี้แสดงให้เห็นถึงการใช้งาน OFFSET & ที่ง่ายที่สุด ; ผลรวม ทีนี้มาดูฟังก์ชั่นเหล่านี้ในมุมอื่นกันบ้างว่ามีอะไรบ้างมิฉะนั้นสามารถทำได้
ตัวอย่างที่ 1 สูตร SUM / OFFSET แบบไดนามิก
เมื่อทำงานกับเวิร์กชีตที่อัปเดตอย่างต่อเนื่อง คุณอาจต้องการมีสูตร SUM ที่เลือกแถวที่เพิ่มใหม่ทั้งหมดโดยอัตโนมัติ
สมมติว่าคุณมีแหล่งข้อมูลคล้ายกับที่คุณเห็นในภาพหน้าจอด้านล่าง ทุก ๆ เดือนจะมีการเพิ่มแถวใหม่เหนือสูตร SUM และแน่นอนว่าคุณต้องการให้รวมไว้ในผลรวม โดยรวมแล้ว มีสองตัวเลือก - อัปเดตช่วงในสูตร SUM ทุกครั้งด้วยตนเองหรือให้สูตร OFFSET ดำเนินการนี้ให้คุณ
ตั้งแต่เซลล์แรกของ ช่วงที่จะรวมจะถูกระบุโดยตรงในสูตร SUM คุณต้องตัดสินใจเลือกพารามิเตอร์สำหรับฟังก์ชัน OFFSET ของ Excel เท่านั้น ซึ่งจะได้เซลล์สุดท้ายของช่วงนั้น:
-
Reference
- เซลล์ มีผลรวม B9 ในกรณีของเรา -
Rows
- เซลล์ทางด้านขวาเหนือผลรวม ซึ่งต้องใช้จำนวนลบ -1 -
Cols
- เป็น 0 เพราะคุณไม่ต้องการเปลี่ยนแปลง คอลัมน์
ดังนั้น นี่คือรูปแบบสูตร SUM / OFFSET:
=SUM( เซลล์แรก:(OFFSET( เซลล์ที่มียอดรวม, -1,0)ปรับแต่งสำหรับตัวอย่างข้างต้น สูตรมีลักษณะดังต่อไปนี้:
=SUM(B2:(OFFSET(B9, -1, 0)))
และดังที่แสดงในภาพหน้าจอด้านล่าง มันทำงานได้อย่างไร้ที่ติ:
ตัวอย่างที่ 2 สูตร OFFSET ของ Excel เพื่อรวม N แถวสุดท้าย
ในตัวอย่างข้างต้น สมมติว่าคุณต้องการทราบจำนวนโบนัสสำหรับN เดือนที่ผ่านมาแทนที่จะเป็นยอดรวมทั้งหมด นอกจากนี้ คุณต้องการให้สูตรรวมแถวใหม่ที่คุณเพิ่มลงในแผ่นงานโดยอัตโนมัติ
สำหรับงานนี้ เราจะใช้ Excel OFFSET ร่วมกับฟังก์ชัน SUM และ COUNT / COUNTA:
=SUM(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
หรือ
=SUM(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
รายละเอียดต่อไปนี้จะช่วยให้คุณเข้าใจสูตรได้ดีขึ้น:
-
Reference
- ส่วนหัวของคอลัมน์ที่มีค่าที่คุณต้องการรวมเซลล์ B1 ในตัวอย่างนี้ -
Rows
- ในการคำนวณจำนวนแถวที่จะหักล้าง คุณใช้ฟังก์ชัน COUNT หรือ COUNTACOUNT ส่งคืนจำนวนเซลล์ในคอลัมน์ B ที่มีตัวเลข ซึ่งคุณลบ N เดือนล่าสุด (ตัวเลขคือเซลล์ E1) แล้วบวก 1
หาก COUNTA เป็นฟังก์ชันที่คุณเลือก คุณไม่จำเป็นต้องบวก 1 เนื่องจากฟังก์ชันนี้จะนับเซลล์ที่ไม่ว่างทั้งหมด และแถวส่วนหัวที่มีค่าข้อความจะเพิ่มเซลล์พิเศษที่สูตรของเราต้องการ โปรดทราบว่าสูตรนี้จะทำงานอย่างถูกต้องเฉพาะในโครงสร้างตารางที่คล้ายกันเท่านั้น - แถวส่วนหัวหนึ่งแถวตามด้วยแถวที่มีตัวเลข สำหรับเค้าโครงตารางต่างๆ คุณอาจต้องทำการปรับเปลี่ยนบางอย่างในสูตร OFFSET/COUNTA
-
Cols
- จำนวนคอลัมน์ที่จะชดเชยเป็นศูนย์ (0) -
Height
- จำนวนแถวที่จะรวมระบุไว้ใน E1 -
Width
- 1 คอลัมน์
ใช้ฟังก์ชัน OFFSET กับ AVERAGE, MAX, MIN
ในลักษณะเดียวกัน เนื่องจากเราคำนวณโบนัสสำหรับ N เดือนที่ผ่านมา คุณสามารถทำได้รับค่าเฉลี่ยของ N วัน สัปดาห์ หรือปีล่าสุด รวมทั้งหาค่าสูงสุดหรือต่ำสุด ข้อแตกต่างเพียงอย่างเดียวระหว่างสูตรคือชื่อของฟังก์ชันแรก:
=AVERAGE(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
คีย์ ประโยชน์ของสูตรเหล่านี้ที่เหนือกว่า AVERAGE(B5:B8) หรือ MAX(B5:B8) ปกติก็คือ คุณจะไม่ต้องอัปเดตสูตรทุกครั้งที่ตารางต้นฉบับของคุณอัปเดต ไม่ว่าจะเพิ่มหรือลบแถวใหม่กี่แถวในเวิร์กชีตของคุณ สูตร OFFSET จะอ้างถึงจำนวนเซลล์สุดท้าย (ล่างสุด) ที่ระบุในคอลัมน์เสมอ
สูตร OFFSET ของ Excel เพื่อสร้างช่วงไดนามิก
เมื่อใช้ร่วมกับ COUNTA ฟังก์ชัน OFFSET สามารถช่วยคุณสร้างช่วงไดนามิกที่อาจเป็นประโยชน์ในหลายสถานการณ์ เช่น เพื่อสร้างรายการแบบเลื่อนลงที่สามารถอัปเดตได้โดยอัตโนมัติ
สูตร OFFSET สำหรับช่วงไดนามิกจะเป็นดังนี้:
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
หัวใจของสูตรนี้ ให้คุณใช้ฟังก์ชัน COUNTA เพื่อรับจำนวนเซลล์ที่ไม่ว่างในคอลัมน์เป้าหมาย ตัวเลขนั้นไปที่อาร์กิวเมนต์ความสูงของ OFFSET เพื่อบอกจำนวนแถวที่จะส่งคืน
นอกเหนือจากนั้น ยังเป็นสูตรปกติของออฟเซ็ต โดยที่:
- อ้างอิง เป็นจุดเริ่มต้นที่คุณตั้งฐานการชดเชย เช่น Sheet1!$A$1
- แถว และ
Cols
เป็น 0 ทั้งคู่ เนื่องจากไม่มีคอลัมน์หรือแถวที่จะหักล้าง<12 - ความกว้าง คือ 1 คอลัมน์
หมายเหตุ ถ้าคุณคือการสร้างช่วงไดนามิกในแผ่นงานปัจจุบัน ไม่จำเป็นต้องใส่ชื่อแผ่นงานในการอ้างอิง Excel จะทำให้คุณโดยอัตโนมัติเมื่อสร้างช่วงที่ตั้งชื่อ มิฉะนั้น อย่าลืมใส่ชื่อแผ่นงานตามด้วยเครื่องหมายอัศเจรีย์เหมือนในตัวอย่างสูตรนี้
เมื่อคุณสร้างช่วงชื่อแบบไดนามิกด้วยสูตร OFFSET ด้านบนแล้ว คุณสามารถใช้การตรวจสอบความถูกต้องของข้อมูลเพื่อสร้างรายการแบบเลื่อนลงแบบไดนามิกที่จะอัปเดตโดยอัตโนมัติทันทีที่คุณเพิ่มหรือลบรายการจากรายการแหล่งที่มา
สำหรับคำแนะนำทีละขั้นตอนโดยละเอียดเกี่ยวกับการสร้างรายการแบบเลื่อนลงใน Excel โปรดดูบทช่วยสอนต่อไปนี้:
- การสร้างรายการแบบเลื่อนลง ใน Excel - แบบคงที่ ไดนามิก จากสมุดงานอื่น
- สร้างรายการแบบเลื่อนลงที่ขึ้นต่อกัน
OFFSET ของ Excel & VLOOKUP
อย่างที่ทุกคนทราบ การค้นหาแนวตั้งและแนวนอนอย่างง่ายจะดำเนินการด้วยฟังก์ชัน VLOOKUP หรือ HLOOKUP ตามลำดับ อย่างไรก็ตาม ฟังก์ชันเหล่านี้มีข้อจำกัดมากเกินไป และมักจะสะดุดกับสูตรการค้นหาที่มีประสิทธิภาพและซับซ้อนกว่า ดังนั้น เพื่อทำการค้นหาที่ซับซ้อนยิ่งขึ้นในตาราง Excel ของคุณ คุณต้องมองหาทางเลือกอื่นๆ เช่น INDEX, MATCH และ OFFSET
ตัวอย่างที่ 1 สูตร OFFSET สำหรับ Vlookup ทางซ้ายใน Excel
หนึ่งในข้อจำกัดที่น่าอับอายที่สุดของฟังก์ชัน VLOOKUP คือไม่สามารถมองไปทางซ้ายได้ หมายความว่า VLOOKUP สามารถคืนค่าเป็นทางขวาของคอลัมน์ค้นหา
ในตารางค้นหาตัวอย่างของเรา มีสองคอลัมน์ - ชื่อเดือน (คอลัมน์ A) และโบนัส (คอลัมน์ B) หากคุณต้องการรับโบนัสในบางเดือน สูตรง่ายๆ ของ VLOOKUP นี้จะใช้งานได้โดยไม่มีปัญหา:
=VLOOKUP(B1, A5:B11, 2, FALSE)
อย่างไรก็ตาม ทันทีที่คุณสลับคอลัมน์ในตารางการค้นหา สูตรนี้ จะส่งผลให้เกิดข้อผิดพลาด #N/A ทันที:
หากต้องการจัดการการค้นหาด้านซ้าย คุณต้องมีฟังก์ชันที่หลากหลายมากขึ้นโดยไม่สนใจว่าคอลัมน์ส่งคืนจะอยู่ที่ใด . หนึ่งในวิธีแก้ปัญหาที่เป็นไปได้คือการใช้ฟังก์ชัน INDEX และ MATCH ร่วมกัน อีกวิธีหนึ่งคือการใช้ OFFSET, MATCH และ ROWS:
OFFSET( lookup_table , MATCH( lookup_value , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( lookup_table ), 1) ,0) -1, return_col_offset , 1, 1)ที่ไหน:
- Lookup_col_offset - คือจำนวนคอลัมน์ที่จะย้ายจากจุดเริ่มต้นไปยังคอลัมน์การค้นหา
- Return_col_offset - คือจำนวนคอลัมน์ที่จะย้ายจากจุดเริ่มต้นไปยังจุดกลับ คอลัมน์.
ในตัวอย่างของเรา ตารางการค้นหาคือ A5:B9 และค่าการค้นหาอยู่ในเซลล์ B1 ค่าชดเชยคอลัมน์การค้นหาคือ 1 (เนื่องจากเรากำลังค้นหาค่าการค้นหาในคอลัมน์ที่สอง (B ) เราต้องย้าย 1 คอลัมน์ไปทางขวาจากจุดเริ่มต้นของตาราง) ค่าชดเชยคอลัมน์ที่ส่งคืนคือ 0 เนื่องจากเรากำลังส่งคืนค่าจากค่าแรก