ข้อผิดพลาด #SPILL! - ขยายเกินขอบของเวิร์กชีต

นำไปใช้กับ
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for iPad Excel Web App Excel for iPhone Excel สำหรับแท็บเล็ต Android Excel สำหรับโทรศัพท์ Android

สูตรอาร์เรย์ที่สปิลล์ซึ่งคุณกําลังพยายามใส่นั้นเกินช่วงของเวิร์กชีต ลองอีกครั้งกับช่วงหรืออาร์เรย์ที่เล็กลง

ในตัวอย่างต่อไปนี้ การย้ายสูตรไปยังเซลล์ F1 จะแก้ไขข้อผิดพลาด และสูตรสปิลล์อย่างถูกต้อง

สกรีนช็อตที่แสดง #SPILL! เมื่อ =SORT(D:D) ในเซลล์ F2 ขยายเกินขอบเขตของเวิร์กบุ๊ก ย้ายข้อความไปยังเซลล์ F1 และแอปจะทํางานได้อย่างถูกต้อง

สาเหตุทั่วไป: การอ้างอิงคอลัมน์แบบเต็ม

ความเข้าใจผิดทั่วไปเกิดขึ้นเมื่อสร้างสูตร VLOOKUP โดยการระบุอาร์กิวเมนต์ lookup_value มากเกินไป ก่อน Excel ที่สามารถใช้งาน อาร์เรย์แบบไดนามิก Excel จะพิจารณาค่าในแถวเดียวกับสูตรและละเว้นค่าอื่นๆ เนื่องจาก VLOOKUP คาดว่าจะมีค่าเพียงค่าเดียวเท่านั้น ด้วยการแนะนําอาร์เรย์แบบไดนามิก Excel จะพิจารณาค่าทั้งหมดที่ระบุให้กับ lookup_value การเปลี่ยนแปลงนี้หมายความว่า ถ้าคุณระบุทั้งคอลัมน์เป็นอาร์กิวเมนต์ lookup_value Excel จะพยายามค้นหาค่าทั้งหมด 1,048,576 ค่าในคอลัมน์ หลังจากทําเสร็จแล้ว มันจะพยายามหกลงบนกริด และเป็นไปได้มากว่าจะถึงจุดสิ้นสุดของกริด ซึ่งส่งผลให้เกิดการ #SPILL! ข้อผิดพลาด  

ตัวอย่างเช่น เมื่ออยู่ในเซลล์ E2 ตามตัวอย่างต่อไปนี้ สูตร =VLOOKUP(A:A,A:C,2,FALSE) ก่อนหน้านี้จะค้นหาเฉพาะ ID ในเซลล์ A2 เท่านั้น อย่างไรก็ตาม ในอาร์เรย์แบบไดนามิก Excel สูตรจะทําให้เกิด #SPILL! เนื่องจาก Excel ค้นหาทั้งคอลัมน์ ส่งกลับผลลัพธ์ 1,048,576 รายการ และไปถึงจุดสิ้นสุดของเส้นตาราง Excel

สกรีนช็อตที่แสดง #SPILL! ข้อผิดพลาดที่เกิดขึ้นกับ =VLOOKUP(A:A,A:D,2,FALSE) ในเซลล์ E2 เนื่องจากผลลัพธ์จะเกินขอบเขตของเวิร์กชีต ย้ายสูตรไปยังเซลล์ E1 และสูตรจะทํางานได้อย่างถูกต้อง

ใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแก้ไขปัญหานี้:

# แนวทาง สูตร
1 อ้างอิงเฉพาะค่าการค้นหาที่คุณสนใจ สูตรสไตล์นี้ส่งกลับอาร์เรย์แบบไดนามิก แต่ใช้ไม่ได้กับตาราง Excel
สกรีนช็อตที่แสดงการใช้ =VLOOKUP(A2:A7,A:C,2,FALSE) เพื่อส่งกลับอาร์เรย์แบบไดนามิกที่ไม่ส่งกลับ #SPILL! ข้อผิดพลาด
=VLOOKUP(A2:A7,A:C,2,FALSE)
2 อ้างอิงเฉพาะค่าบนแถวเดียวกัน จากนั้นคัดลอกสูตรลง สไตล์สูตรแบบดั้งเดิมนี้ใช้งานได้ในตาราง แต่ไม่ส่งกลับอาร์เรย์แบบไดนามิก
สกรีนช็อตที่แสดงการใช้ VLOOKUP แบบดั้งเดิมที่มีการอ้างอิง lookup_value เดียว: =VLOOKUP(A2,A:C,32,FALSE) สูตรนี้ไม่ส่งกลับอาร์เรย์แบบไดนามิก แต่คุณสามารถใช้กับตาราง Excel ได้
=VLOOKUP(A2,A:C,2,FALSE)
3 ขอให้ Excel ทําการอินเตอร์เซกชันโดยนัยโดยใช้ตัวดําเนินการ @ แล้วคัดลอกสูตรลง สูตรสไตล์นี้ทํางานในตาราง แต่ไม่ส่งกลับอาร์เรย์แบบไดนามิก
สกรีนช็อตที่แสดงการใช้ตัวดําเนินการ @ และคัดลอกลง: =VLOOKUP(@A:A,A:C,2,FALSE) สไตล์การอ้างอิงนี้ใช้งานได้ในตาราง แต่ไม่ส่งกลับอาร์เรย์แบบไดนามิก
=VLOOKUP(@A:A,A:C,2,FALSE)

ต้องการความช่วยเหลือเพิ่มเติมไหม

คุณสามารถสอบถามผู้เชี่ยวชาญใน ชุมชนด้านเทคนิคของ Excel หรือรับการสนับสนุนใน ชุมชนได้เสมอ

ดูเพิ่มเติม

ฟังก์ชัน FILTER

ฟังก์ชัน RANDARRAY

ฟังก์ชัน SEQUENCE

ฟังก์ชัน SORT

ฟังก์ชัน SORTBY

ฟังก์ชัน UNIQUE

วิธีการแก้ไข #SPILL ข้อผิดพลาด

สูตรอาร์เรย์แบบไดนามิกและลักษณะการทำงานของอาร์เรย์ที่สปิลล์

ตัวดําเนินการอินเทอร์เซกชันโดยนัย: @