معادلة واحدة، بدون أي نسخ أو لصق: هكذا تدمج دالة VSTACK أوراق إكسل تلقائيًا وبشكل حي.
إذا كنت تبحث عن طريقة لدمج شيتات إكسل بدون تكرار نفس عملية النسخ واللصق كل أسبوع، فالجواب المختصر هو دالة واحدة اسمها VSTACK. هذه الدالة تجمع بيانات من عدة أوراق عمل (أو حتى عدة نطاقات) في قائمة واحدة متصلة، وتُحدّث نفسها تلقائيًا كل مرة تتغيّر فيها البيانات المصدر — بدون أي زر "تحديث" تحتاج أن تتذكّره. شكل المعادلة بسيط:
معادلة إكسل
=VSTACK(Sheet1!A2:D100, Sheet2!A2:D100, Sheet3!A2:D100)
بحسب خبرتي في التعامل مع تقارير مبيعات وميزانيات موزّعة على أوراق متعددة، هذه هي فعلًا الخطوة الأخيرة التي تحتاجها لإنهاء عادة النسخ اليدوي — لكن VSTACK لها أيضًا تفاصيل صغيرة تُوقع الكثيرين في مشاكل أول مرة يجرّبونها فيها: أخطاء الانسكاب (Spill)، اختلاف عدد الأعمدة بين الأوراق، وحالات تكون فيها هذه الدالة ببساطة الخيار الخطأ وتحتاج فيها Power Query بدلًا منها. في هذا الدليل سأشرح لك كل هذا بالتفصيل: كيف تُعِدّ المعادلة، ما الذي يُفسدها، ومتى تتوقف عن استخدامها وتنتقل لأداة أخرى.
أنا مصطفى أمان، وفي مدونة وادي التكنولوجيا أكتب أدلة تقنية عملية مبنية على تجربة حقيقية مع الأدوات. لنبدأ بدمج جداولك.
ما الذي تفعله دالة VSTACK فعليًا؟ (بمثال مباشر)
لنفترض أنك تتابع مبيعاتك على ثلاث أوراق عمل منفصلة — الشمال، الجنوب، والغرب — وكل ورقة فيها نفس الأعمدة الأربعة: التاريخ، المنتج، المنطقة، والمبلغ. بدلًا من نسخ كل نطاق يدويًا إلى ورقة رابعة اسمها "الإجمالي"، تكتب معادلة واحدة فقط في خلية فارغة:
معادلة إكسل
=VSTACK(الشمال!A2:D50, الجنوب!A2:D50, الغرب!A2:D50)
اضغط Enter مرة واحدة، وستقوم إكسل بـ"انسكاب" (Spill) كل صفوف الأوراق الثلاث في قائمة واحدة متصلة، تبدأ من تلك الخلية — صفوف الشمال أولًا، ثم الجنوب، ثم الغرب، بنفس الترتيب الذي كتبته في المعادلة. هذه دالة من نوع المصفوفات الديناميكية (Dynamic Array) — أي نوع معادلات يمكنها إرجاع أكثر من نتيجة واحدة من معادلة واحدة فقط — لذلك القائمة الناتجة كلها كائن حي واحد، وليست قيمًا مُلصقة.
وهذا هو الجزء الذي يستحق التعلّم فعلًا. عدّل رقمًا في ورقة الشمال، أضف صفًا جديدًا في الجنوب، احذف شيئًا من الغرب — القائمة المجمّعة في ورقتك الرئيسية تتحدّث لحظيًا بدون أي تدخّل منك. لا يوجد زر "تحديث" عليك تذكّره، على عكس Power Query التي لا تُحدّث نتائجها إلا عند الضغط يدويًا على "Refresh".
VSTACK مقابل Power Query مقابل Consolidate مقابل VBA
معظم المحتوى العربي عن دمج ملفات إكسل يتوقف عند طريقتين فقط: النسخ واللصق اليدوي، أو أداة Consolidate القديمة. لكن الاختيار الفعلي بينهما وبين VSTACK وPower Query يعتمد على شكل بياناتك، وقبل أن تلتزم بأي طريقة يستحق الأمر معرفة أين تتفوّق كل واحدة فعلًا:
| الطريقة | التحديث | الأفضل لـ | القيود |
|---|---|---|---|
| VSTACK | حيّ وتلقائي | دمج سريع لأوراق نظيفة بنفس الشكل | تحتاج Excel 365 / 2024 فقط، بدون تنظيف للبيانات |
| Power Query | يدوي بزر "تحديث" | بيانات فوضوية، عشرات الملفات، تحويلات معقّدة | منحنى تعلّم أصعب |
| أداة Consolidate | لقطة ثابتة | جمع أو حساب متوسط أرقام عبر أوراق | غير مخصصة لدمج الصفوف واحدًا تلو الآخر |
| ماكرو VBA | عند الطلب | مئات الملفات، أتمتة متكررة (أو Google Apps Script إذا كنت تستخدم جوجل شيتس) | يحتاج برمجة، وصيانته أصعب |
من خلال تجربتي، معظم من يبحث عن دمج جداول لا يحتاج فعليًا محرك التحويلات الكامل في Power Query — كل ما يحتاجه هو بالضبط ما تقدّمه VSTACK. اترك Power Query للحالات التي تكون فيها بياناتك المصدر فوضوية فعلًا (عناوين أعمدة مختلفة، تنسيق غير متّسق، عشرات الملفات المنفصلة).
خطوات دمج أوراق العمل بدالة VSTACK
- تأكّد أن نسخة إكسل لديك تدعم الدالة. تعمل VSTACK فقط في Excel لمايكروسوفت 365، Excel 2024، Excel 2024 لماك، وExcel للويب. إذا كنت تستخدم Excel 2021 أو أقدم، انتقل مباشرة لقسم Power Query أسفل هذا الدليل.
-
تأكّد أن كل نطاق مصدر له نفس عدد الأعمدة. إذا كانت ورقة الشمال فيها 4 أعمدة والجنوب
فيها 5، ستعمل VSTACK رغم ذلك، لكن الصفوف الأقصر تُملأ بخطأ
#N/A. صحّح النطاقات أولًا، أو استخدم غلاف IFERROR الذي سنشرحه لاحقًا في هذا الدليل. - انقر على خلية فارغة لها مساحة كافية للانسكاب. نتيجة VSTACK تتمدّد نزولًا تلقائيًا، لذا اختر خلية فيها صفوف وأعمدة فارغة كافية أسفلها — الأفضل أن تكون بداية ورقة جديدة تمامًا.
-
اكتب المعادلة، مع ذكر كل نطاق بالترتيب الذي تريد دمجه به:
معادلة إكسل
=VSTACK(Sheet1!A2:D100, Sheet2!A2:D100, Sheet3!A2:D100)
- اضغط Enter وتحقّق من نتيجة الانسكاب. يجب أن تظهر كل صفوف كل نطاق مذكور في كتلة واحدة متصلة. إذا ظهر خطأ انسكاب بدلًا من البيانات، فهذا يعني وجود شيء غير فارغ أسفل أو بجوار خليتك الأولى — امسح تلك المنطقة وأعد كتابة المعادلة.
- اختبر أنها فعلًا حيّة. ارجع لأحد أوراق المصدر، غيّر قيمة أو أضف صفًا، ثم عد للورقة المجمّعة. يجب أن يظهر التغيير فورًا — بدون أي تحديث يدوي.
=VSTACK('الشمال:الغرب'!A2:D100).
أي ورقة جديدة تضيفها بين الشمال والغرب في ترتيب علامات التبويب تُسحب تلقائيًا داخل الدمج — مفيدة جدًا إذا
كنت تُضيف منطقة جديدة كل ربع سنة ولا تريد تعديل المعادلة في كل مرة.
خطوة أبعد: تقرير مفلتر بالتاريخ من عدة أوراق دفعة واحدة
الدمج وحده مفيد، لكن VSTACK تصبح قوية فعلًا عند دمجها مع دالتَي
FILTER
وLET.
لنفترض أن معاملاتك موزّعة على ثلاث أوراق سنوية — 2024، 2025، و
2026 — وتريد لوحة صغيرة يكتب فيها أي شخص تاريخ بداية ونهاية، ويرى فورًا الصفوف المطابقة
من السنوات الثلاث مجتمعة:
معادلة إكسل
=LET(
الكتلة_الكاملة, VSTACK('2024'!A2:F100, '2025'!A2:F100, '2026'!A2:F100),
عمود_التاريخ, CHOOSECOLS(الكتلة_الكاملة, 6),
FILTER(الكتلة_الكاملة, (عمود_التاريخ >= B2) * (عمود_التاريخ <= B3))
)
بالعربية البسيطة: دالة
LET
تُسمّي الكتلة المدمجة باسم واضح حتى لا تكرر نفس معادلة VSTACK ثلاث مرات. دالة
CHOOSECOLS
تسحب العمود السادس (عمود التاريخ) لتفحصه. ثم
FILTER
تُبقي فقط الصفوف التي يقع تاريخها بين القيمتين المكتوبتين في الخليتين B2 وB3. غيّر أي تاريخ وسيُعاد
حساب التقرير كاملًا فورًا — هذه أداة تقارير حقيقية جاهزة للاستخدام مبنية في خلية واحدة فقط.
الفخ الخفي: VSTACK لا تنسخ التنسيق
من أكثر الأشياء التي تُفاجئ مستخدمي VSTACK الجدد أن بياناتهم المُنسّقة بعناية تتحول فجأة إلى قائمة عادية بلا أي تنسيق. VSTACK تسحب القيم فقط، وليس التنسيق. لن تنقل معك ألوان الخلفية، الخط العريض، الحدود، أو حتى تنسيق الأرقام والعملات.
إذا كانت التواريخ في أوراقك المصدر منسّقة بشكل "15-يناير-2024"، ستُخرجها VSTACK كأرقام تسلسلية خام (مثل "45306") — وهذا بالضبط الخطأ الذي يجعل الناس يظنون أن الدالة "معطّلة".
الحل: طبّق التنسيق يدويًا على النطاق الوجهة الذي تعيش فيه معادلة VSTACK. حدّد الأعمدة كاملة (أو أقصى نطاق انسكاب متوقّع) في ورقتك الرئيسية، وطبّق تنسيق العملة والتاريخ والشكل المرئي الذي تريده هناك. البيانات المنسكبة ستتبنّى تلقائيًا أي تنسيق مضبوط على تلك الخلايا.
كيف تتجاهل الصفوف الفارغة؟ (تركيبة VSTACK + FILTER)
قد تُغريك فكرة الإشارة إلى عمود كامل (A:D) أو
نطاق ضخم زيادة عن الحاجة (A2:D1000)
لجعل معادلتك "مضمونة للمستقبل". لكن إذا فعلت هذا، ستسحب VSTACK كل تلك الصفوف الفارغة معها بطاعة تامة،
وتحصل على مئات الأصفار أو الفراغات مكدّسة بين مجموعات بياناتك الحقيقية.
الحل هو تضمين VSTACK داخل دالة
FILTER
لإسقاط أي صف يكون فيه عمود إلزامي (مثل رقم تعريفي أو تاريخ) فارغًا تلقائيًا:
معادلة إكسل
=LET(
البيانات_الخام, VSTACK(الشمال!A2:D1000, الجنوب!A2:D1000),
FILTER(البيانات_الخام, CHOOSECOLS(البيانات_الخام, 1) <> "")
)
هذه المعادلة تدمج النطاقات الضخمة أولًا، ثم تُصفّي الكتلة الكاملة لتُبقي فقط الصفوف التي عمودها الأول ليس فارغًا. إنها الطريقة الأنظف لبناء ورقة رئيسية ديناميكية بالكامل، بدون تدخّل يدوي بعد الإعداد الأول.
تحتاج دمجًا جنبًا إلى جنب؟ تعرّف على HSTACK
بينما تتعامل VSTACK مع التكديس العمودي (إضافة صفوف أسفل بعضها)، فإن دالتها الشقيقة HSTACK تتعامل مع التكديس الأفقي (إضافة أعمدة جنبًا إلى جنب).
إذا كان لديك ورقة فيها أسماء الموظفين، وورقة أخرى فيها بيانات التواصل الخاصة بهم بنفس الترتيب تمامًا،
يمكنك دمجهما أفقيًا بالمعادلة: =HSTACK(Sheet1!A2:B50, Sheet2!C2:E50).
القواعد نفسها: تُحدّث نفسها فورًا، يمكن أن تُصاب بخطأ انسكاب إذا لم توجد مساحة كافية، ولا تنقل معها التنسيق. معرفة كلتا الدالتين تمنحك تحكّمًا كاملًا في إعادة تشكيل مصفوفات بياناتك.
حل الأخطاء التي تُظهرها VSTACK فعليًا
يواجه تقريبًا كل من يجرّب هذه الدالة لأول مرة أحد هذه الأخطاء. إليك جدول التشخيص الذي كنت أتمنى لو توفّر لي أول مرة استخدمتها فيها:
| العرض | السبب المرجّح | الحل |
|---|---|---|
| خطأ #SPILL! | خلية أخرى تجلس في مسار توسّع النتيجة | امسح الخلايا المحيطة، أو انقل المعادلة لمنطقة فارغة |
| #N/A في بعض الصفوف | النطاقات المصدر ليس لها نفس عدد الأعمدة | طابق عدد الأعمدة، أو استخدم IFERROR(VSTACK(...),
"") |
| خطأ انسكاب داخل جدول (Table) | VSTACK لا تستطيع الانسكاب داخل جدول إكسل منظّم | ضع المعادلة خارج أي جدول، في نطاق عادي |
| خطأ #NAME؟ | أنت تستخدم Excel 2021 أو 2019 أو أقدم | حدّث لـ Microsoft 365، أو استخدم Power Query بدلًا منها |
| المعادلة تتوقف بعد إغلاق ملف | أنت تشير لنطاق في مصنف آخر مغلق | أبقِ المصنف المصدر مفتوحًا، أو انسخ البيانات لنفس الملف أولًا |
=IFERROR(VSTACK(Sheet1!A2:D100,
Sheet2!A2:E100), ""). أي صف كان سيُظهر خطأ #N/A يتحوّل إلى خلية فارغة بدلًا منه — أسهل بكثير في
القراءة البصرية من ورقة مليئة برموز أخطاء.
5 أخطاء أراها كثيرًا عند استخدام VSTACK
- محاولة استخدامها داخل جدول إكسل (Table). VSTACK معادلة انسكاب — حجم نتيجتها يتغيّر مع تغيّر بيانات المصدر. جداول إكسل لها شكل ثابت ومنظّم ولا تستطيع استيعاب ذلك. اترك نتيجة VSTACK في نطاق عادي، وحوّلها لجدول لاحقًا فقط إذا احتجت ذلك وكان عدد الصفوف مستقرًا.
-
الإشارة لأعمدة كاملة بدل نطاقات محدّدة. شيء مثل
Sheet1!A:Dيبدو أكثر أمانًا من تخمين عدد الصفوف، لكنه يسحب معه عشرات آلاف الصفوف الفارغة ويُبطئ الملف بشكل ملحوظ. قدّر حدًّا أقصى واقعيًا بدلًا من ذلك، مثلA2:D5000. - نسيان أن المصنف المصدر يجب أن يبقى مفتوحًا للمراجع بين الملفات. معادلة VSTACK التي تسحب من مصنف منفصل مغلق ستُظهر خطأً أو تتوقف عن التحديث بصمت. إذا كنت تدمج ملفات لا تكون مفتوحة معًا دائمًا، فهذه إشارة قوية لاستخدام Power Query بدلًا منها.
- افتراض أن العناوين تُدمج بذكاء. VSTACK لا تطابق الأعمدة بأسماء العناوين — بل تكدّسها حسب الموضع. إذا كان العمود B في الورقة الأولى "المنطقة" والعمود B في الثانية "اسم المندوب"، ستحصل على عمود مدمج صحيح فنيًا لكنه بلا معنى. وحّد ترتيب أعمدتك عبر الأوراق قبل الدمج، وليس بعده.
-
عدم التحقّق من الصفوف المكرّرة بعد الدمج. إذا وُجدت نفس المعاملة عن طريق الخطأ في
ورقتين مصدر، ستُدرجها VSTACK مرتين بكل سرور — فهي لا تملك أي آلية إزالة تكرار مدمجة. أضف غلاف
UNIQUE()حول النتيجة إذا كان تكرار البيانات احتمالًا واقعيًا في بياناتك.
متى تتخطّى VSTACK وتستخدم Power Query بدلًا منها؟
VSTACK ليست الأداة الصحيحة لكل عملية دمج، ومن الأفضل الاعتراف بذلك من البداية بدل مصارعة المعادلة لساعة كاملة. استخدم Power Query بدلًا منها عندما:
- تُجمّع بيانات من عشرات الملفات المنفصلة داخل مجلد، وليس مجرد بضع أوراق.
- بياناتك المصدر فوضوية فعلًا — عناوين غير متّسقة، أنواع بيانات مختلطة، صفوف فارغة زائدة — وتحتاج تنظيفًا قبل أن تصبح قابلة للاستخدام.
- تحتاج النتيجة النهائية أن تكون جدول إكسل رسمي (Table)، خصوصًا مع مرشّحات (Slicers) أو جدول محوري مبني فوقها.
- تعمل على Excel 2021، 2019، أو ترخيص أقدم غير مرتبط بـ Microsoft 365، حيث لا توجد VSTACK أصلًا.
Power Query تتنازل عن التحديث الفوري بدون نقرات الذي تقدّمه VSTACK مقابل خط أنابيب حقيقي لتنظيف البيانات وزر "تحديث" — صفقة عادلة بمجرد أن تتوقف ملفاتك المصدر عن كونها مرتّبة ومتطابقة الشكل.
إذا كنت تفكّر في الانتقال لأدوات أتمتة أشمل بعد أن تكبر جداولك، ألقِ نظرة على دليلنا الشامل عن أتمتة سير العمل بـ n8n — مفيد جدًا عندما تحتاج ربط إكسل بأدوات أخرى تلقائيًا بدل تكرار العمل يدويًا.
أعجبك الأسلوب العملي؟
انضم إلى مئات المشتركين واحصل على أحدث الأدلة التقنية والبرمجية العملية — مشاريع حقيقية لا نظريات — تصلك مباشرة على بريدك.
نعم، أشترك! ✉️🔒 لا رسائل مزعجة أبداً. نحترم صندوق بريدك.
يسعدنا أن نسمع آراءكم! اتركوا تعليقاً أدناه وشاركوا تجاربكم أو أسئلتكم.