يعني #SPILL! أن صيغة تعيد عدة قيم (قائمة أو جدولًا) ولا يجد الاكسل مكانًا لكتابتها: خلية واحدة على الأقل في النطاق الذي تحتاجه النتيجة ليست فارغة. تحتاج =UNIQUE(A2:A6) أدناه إلى ثلاث خلايا، من C2 إلى C4، وتحتوي C4 على x. احذف C4 فتظهر القائمة.
| A | B | C | |
|---|---|---|---|
| 1 | Product | Unique list | |
| 2 | Apple | #SPILL! | |
| 3 | Pear | ||
| 4 | Apple | x | |
| 5 | Plum | ||
| 6 | Pear |
#SPILL! تحتاج النتيجة إلى خلايا فارغة أكثر. أفرغ الخلايا التي تعترضها.انقر C2: تقول الملاحظة تحت الشبكة ما الخطأ. ثم انقر C4 واضغط Delete. تمتد المنتجات الثلاثة إلى C2:C4، ويحدد إطار نطاق الامتداد. اكتب شيئًا في C3 فيعود الخطأ. والاكسل يعمل بالطريقة نفسها: الدوال التي تعيد مصفوفات، مثل FILTER وUNIQUE وSORT وSEQUENCE وTEXTSPLIT، لا تعمل إلا عندما يكون نطاق امتدادها كله فارغًا. وتحتاج إلى Excel 2021 أو أحدث (TEXTSPLIT: Microsoft 365 أو Excel 2024)؛ وتعرض الإصدارات الأقدم #NAME? لها، فلا يظهر #SPILL! هناك أبدًا (راجع UNIQUE للدالة نفسها).
كيف تصلح خطأ #SPILL!
- انقر الخلية التي فيها
#SPILL!. في الاكسل، يُظهر حد متقطع النطاق الذي تريد النتيجة ملأه. - انقر أيقونة التحذير بجانب الخلية واختر تحديد الخلايا المعرقلة. يحدد الاكسل كل خلية تعترض الطريق.
- اضغط Delete، أو انقل تلك الخلايا إلى مكان آخر (قص ولصق).
إذا كانت الخلايا المعرقلة تحتوي على بيانات تحتاجها، فانقل الصيغة بدلًا من ذلك: ضعها في عمود أو صف يكون كل ما تحته وبجانبه فارغًا.
خطأ #SPILL! والخلايا تبدو فارغة
أكثر الحالات إرباكًا: يبدو نطاق الامتداد فارغًا، لكن الاكسل لا يزال يقول #SPILL!. الخلية التي تحتوي على مسافة واحدة، أو على صيغة تعيد نصًا فارغًا ""، ليست فارغة، وتعرقل الامتداد تمامًا كما تفعل القيمة.
| A | B | C | |
|---|---|---|---|
| 1 | Numbers | Numbers | |
| 2 | #SPILL! | #SPILL! | |
| 3 | |||
| 4 |
#SPILL! تحتاج النتيجة إلى خلايا فارغة أكثر. أفرغ الخلايا التي تعترضها.تريد A2 النطاق A2:A4، وتحتوي A4 على مسافة. وتريد C2 النطاق C2:C3، وتحتوي C3 على ="". انقر A4 أو C3 لترى ما فيها، واحذفه، فتمتد الأرقام. وفي الاكسل، يجد تحديد الخلايا المعرقلة هذه الخلايا حتى عندما لا يظهر فيها شيء. والنص الأبيض على تعبئة بيضاء يختفي بالطريقة نفسها.
خطأ #SPILL! عندما تمتد صيغة في أخرى
يمكن لصيغتين ممتدتين أن تعرقل إحداهما الأخرى، أو قد تقع صيغة كتبها أحدهم في الأسفل داخل نطاق امتداد الصيغة التي فوقها.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Dept | IT | Sales | |
| 2 | Ana | IT | #SPILL! | Ben | |
| 3 | Ben | Sales | Dee | ||
| 4 | Cy | IT | 5 | ||
| 5 | Dee | Sales | |||
| 6 | Eve | IT |
#SPILL! تحتاج النتيجة إلى خلايا فارغة أكثر. أفرغ الخلايا التي تعترضها.تحتاج قائمة IT إلى ثلاث خلايا، D2:D4، وتحتوي D4 على صيغة COUNTA. أما قائمة Sales في E2 فلديها الخليتان اللتان تحتاجهما، فتعمل. انقل صيغة COUNTA إلى D6 (أو أي خلية تحت القائمة) فتمتد أسماء IT. واترك مكانًا لنمو القائمة: إذا أُضيف موظف رابع في IT لاحقًا، تحتاج النتيجة إلى خلية إضافية.
خطأ #SPILL! مع VLOOKUP والأعمدة الكاملة
من الأسباب الشائعة في الصيغ المكتوبة للإصدارات الأقدم قيمة بحث هي عمود كامل:
=VLOOKUP(A:A,Prices!A:B,2,FALSE) #SPILL! (one result for every row of the sheet)
=VLOOKUP(A2,Prices!A:B,2,FALSE) one result, fill it down
=VLOOKUP(A2:A100,Prices!A:B,2,FALSE) 100 results that spill
=VLOOKUP(@A:A,Prices!A:B,2,FALSE) one result, the value on the formula's own row
في A:A يوجد 1,048,576 خلية، فتطلب الصيغة الأولى 1,048,576 نتيجة، ومن الصف 2 فما بعده لا تبقى صفوف كافية: تقول قائمة التحذير إن نطاق الامتداد يتجاوز حافة ورقة العمل. يأتي هذا النمط من الإصدارات الأقدم، التي كانت تستخدم بصمت القيمة الموجودة في صف الصيغة فقط. ويحافظ Excel 365 على هذا السلوك في المصنفات القديمة بعرض الصيغة بالشكل =VLOOKUP(@A:A,...)، لكن الصيغة نفسها إذا كُتبت من جديد تمتد على العمود كله. ويحدث الشيء نفسه مع =A:A*2 ومع أي صيغة تجري حسابًا على عمود كامل. استخدم خلية واحدة وانسخها إلى الأسفل، أو نطاقًا بالحجم الحقيقي، أو @. والمزيد عن البحث نفسه في صفحة VLOOKUP.
نتيجة واحدة لكل صف بدلًا من الامتداد
الصيغة التي تجري حسابًا على نطاق تمتد أيضًا. وغالبًا هذا ما تريده، وأحيانًا تريد صيغة لكل صف بدلًا من ذلك.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Month | Sales | Spilled +10% | Filled +10% |
| 2 | Jan | 100 | 110 | 110 |
| 3 | Feb | 120 | 132 | 132 |
| 4 | Mar | 90 | 99 | 99 |
| 5 | Apr | 140 | 154 | 154 |
يعرض العمودان 110 و132 و99 و154. تحتوي C2 على صيغة واحدة، وC3:C5 هي امتدادها: انقر C3 فتقول الملاحظة تحت الشبكة إنها ممتدة من C2. اكتب في C4 فتتحول C2 إلى #SPILL!. أما D2:D5 فهي أربع صيغ منفصلة، فيمكن تغيير كل خلية وحدها ولا شيء يمكن أن يعرقلها. استخدم الشكل الثاني عندما سيكتب الناس فوق نتائج مفردة.
خطأ #SPILL! في جدول، أو مع خلايا مدمجة، أو بحجم غير معروف
تعتمد هذه الأسباب على المصنف، لا على الصيغة:
- داخل جدول اكسل (إدراج > جدول): لا تدعم الجداول النتائج الممتدة، فتعرض FILTER أو UNIQUE في عمود جدول
#SPILL!. ضع الصيغة خارج الجدول، أو حدد الجدول واختر تصميم الجدول > تحويل إلى نطاق. - خلايا مدمجة في نطاق الامتداد: حددها واختر الصفحة الرئيسية > دمج وتوسيط > إلغاء دمج الخلايا، أو انقل الصيغة.
- نطاق الامتداد غير معروف: يتغير حجم النتيجة مع كل إعادة حساب، كما في
=SEQUENCE(RANDBETWEEN(1,10)). يرفض الاكسل مدّ نتيجة حجمها متقلب. أعطها حجمًا ثابتًا. - نطاق الامتداد كبير جدًا أو يتجاوز حافة ورقة العمل: ستتجاوز النتيجة آخر صف أو عمود. نفاد الذاكرة: المصفوفة أكبر من أن تُحسب. وفي الحالات الثلاث، قلّص النطاقات، عادة من أعمدة كاملة إلى البيانات الحقيقية.
إرجاع قيمة واحدة حتى لا يعرقلها شيء
عندما تحتاج إلى رقم واحد فقط من قائمة، مثل عدد المنتجات المختلفة، ضع الدالة الممتدة داخل دالة تعيد قيمة واحدة. القيمة الواحدة لا تمتد أبدًا، فلا يمكن لأي خلية أن تعترض طريقها.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | Different products | |||
| 2 | Apple | ||||
| 3 | Pear | ||||
| 4 | Apple | x | |||
| 5 | Plum | ||||
| 6 | Pear | ||||
| 7 | Apple |
دورك: يجب أن تقول E2 كم منتجًا مختلفًا يوجد في A2:A7. ستمتد =UNIQUE(A2:A7) العادية إلى x في E4. اكتب في E2 صيغة واحدة تعيد العدد.
تعدّ COUNTA القيم التي تعيدها UNIQUE وتعيد رقمًا واحدًا. والفكرة نفسها تعمل مع =INDEX(SORT(A2:A7),1) لأول قيمة في قائمة مرتبة، و=INDEX(FILTER(...),1) لأول تطابق، و=SUM(FILTER(...)) لمجموع.
الأسئلة الشائعة
ماذا يعني #SPILL! في الاكسل؟
أعادت صيغة أكثر من قيمة (مصفوفة ديناميكية) ولم يستطع الاكسل كتابتها في الخلايا التي تحتها أو بجانبها، لأن خلية واحدة على الأقل منها ليست فارغة، أو مدمجة، أو داخل جدول. امسح ما يعترض الطريق أو انقله فتظهر النتائج.
لماذا يظهر #SPILL! والخلايا تبدو فارغة؟
لأن الخلية التي تبدو فارغة قد تحتوي على مسافة، أو صيغة تعيد ""، أو نص منسق باللون الأبيض. وأي منها يعرقل الامتداد. انقر أيقونة التحذير بجانب الخطأ واختر تحديد الخلايا المعرقلة، ثم اضغط Delete.
كيف أصلح #SPILL! مع VLOOKUP؟
قيمة البحث عمود أو نطاق كامل، مثل =VLOOKUP(A:A,D:E,2,FALSE)، فيحاول الاكسل إرجاع نتيجة لكل صف في الورقة. استخدم خلية واحدة وانسخها إلى الأسفل، =VLOOKUP(A2,D:E,2,FALSE)، أو نطاقًا بالحجم الفعلي، =VLOOKUP(A2:A100,D:E,2,FALSE).
كيف أمنع صيغة من الامتداد في الاكسل؟
اجعلها تعيد قيمة واحدة. ضع @ قبل النطاق لأخذ القيمة الموجودة في صف الصيغة نفسه فقط (=@A2:A10*2)، أو ضع النتيجة داخل دالة تعيد قيمة واحدة، مثل =COUNTA(UNIQUE(A2:A10)) أو =INDEX(SORT(A2:A10),1).
هل يمكن وضع صيغة ممتدة داخل جدول في الاكسل؟
لا. تعرض الصيغة الممتدة #SPILL! داخل الجدول. ضعها في خلية خارج الجدول، أو حوّل الجدول إلى نطاق عادي من تصميم الجدول > تحويل إلى نطاق.