جدول المحتويات
أسرع طريقة لتحويل عمود أو صف من القيم إلى مصفوفة ثنائية الأبعاد هي استخدام دالة WRAPCOLS أو WRAPROWS.
منذ الأيام الأولى لبرنامج Excel ، كان الأمر كذلك جيد جدا في حساب وتحليل الأرقام. لكن التلاعب بالمصفوفات كان يمثل تحديًا تقليديًا. أدى إدخال المصفوفات الديناميكية إلى تسهيل استخدام صيغ الصفيف كثيرًا. والآن ، تطلق Microsoft مجموعة من وظائف الصفيف الديناميكية الجديدة لمعالجة المصفوفات وإعادة تشكيلها. سيعلمك هذا البرنامج التعليمي كيفية استخدام وظيفتين من هذا القبيل ، WRAPCOLS و WRAPROWS ، لتحويل عمود أو صف إلى صفيف ثنائي الأبعاد في أي وقت من الأوقات.
دالة Excel WRAPCOLS
تقوم الدالة WRAPCOLS في Excel بتحويل صف أو عمود من القيم إلى صفيف ثنائي الأبعاد استنادًا إلى العدد المحدد من القيم لكل صف.
0 المصفوفة أو النطاق المصدر أحادي البعد.على سبيل المثال ، لتغيير النطاق B5: B24 إلى صفيف ثنائي الأبعاد مع 5 قيم لكل عمود ، الصيغة هي:
=WRAPROWS(B5:B24, 5)
أدخل ملفالوسيطة المتجه ليست صفيفًا أحادي البعد.
#NUM! خطأ
يحدث خطأ #NUM إذا كانت قيمة wrap_count هي 0 أو رقم سالب.
#SPILL! خطأ
في أغلب الأحيان ، يشير الخطأ #SPILL إلى عدم وجود خلايا فارغة كافية لتدفق النتائج فيها. امسح الخلايا المجاورة ، وسوف تختفي. إذا استمر الخطأ ، فتحقق من معنى #SPILL في Excel وكيفية إصلاحه.
هذه هي كيفية استخدام دالتي WRAPCOLS و WRAPROWS لتحويل نطاق أحادي البعد إلى صفيف ثنائي الأبعاد في Excel. أشكرك على القراءة وآمل أن أراك على مدونتنا الأسبوع المقبل!
تدرب على المصنف للتنزيل
وظائف WRAPCOLS و WRAPROWS - أمثلة (ملف .xlsx)
الصيغة في أي خلية مفردة وتتسرب تلقائيًا إلى أكبر عدد ممكن من الخلايا حسب الحاجة. في إخراج WRAPCOLS ، يتم ترتيب القيم عموديًا ، من أعلى إلى أسفل ، بناءً على قيمة wrap_count. بعد الوصول إلى العدد ، يبدأ عمود جديد.
دالة Excel WRAPROWS
تقوم الدالة WRAPROWS في Excel بتحويل صف أو عمود من القيم إلى صفيف ثنائي الأبعاد استنادًا إلى عدد القيم لكل صف تحدده.
بناء الجملة كما يلي:
WRAPROWS (متجه ، wrap_count ، [pad_with])حيث:
- vector (مطلوب) - المصدر أحادي البعد المصفوفة أو النطاق.
- wrap_count (مطلوب) - الحد الأقصى لعدد القيم في كل صف.
- pad_ with (اختياري) - القيمة المطلوب حشوها بالصف الأخير إذا لم يكن هناك عناصر كافية لملئه. الافتراضي هو # N / A.
على سبيل المثال ، لتحويل النطاق B5: B24 إلى صفيف ثنائي الأبعاد يحتوي على 5 قيم في كل صف ، الصيغة هي:
=WRAPROWS(B5:B24, 5)
أدخل الصيغة في الخلية العلوية اليسرى من نطاق الانسكاب ، وتقوم بملء جميع الخلايا الأخرى تلقائيًا. ترتب الدالة WRAPROWS القيم أفقيًا ، من اليسار إلى اليمين ، بناءً على قيمة wrap_count . بعد الوصول إلى العدد ، يبدأ صفًا جديدًا.
توفر WRAPCOLS و WRAPROWS
تتوفر كلتا الوظيفتين فقط في Excel for Microsoft 365 (Windows و Mac) و Excel للويب.
في وقت سابقالإصدارات ، يمكنك استخدام الصيغ التقليدية الأكثر تعقيدًا لإجراء تحويلات من عمود إلى صفيف ومن صف إلى صفيف. علاوة على ذلك في هذا البرنامج التعليمي ، سنناقش الحلول البديلة بالتفصيل.
نصيحة. لإجراء عملية عكسية ، أي تغيير صفيف ثنائي الأبعاد إلى عمود أو صف واحد ، استخدم دالة TOCOL أو TOROW ، على التوالي.
كيفية تحويل عمود / صف إلى نطاق في Excel - أمثلة
الآن بعد أن فهمت الاستخدام الأساسي ، دعنا نلقي نظرة فاحصة على بعض الحالات الأكثر تحديدًا.
تعيين الحد الأقصى لعدد القيم لكل عمود أو صف
اعتمادًا على بنية بياناتك الأصلية ، قد تجد أنه من المناسب إعادة ترتيبها في أعمدة (WRAPCOLS) أو صفوف (WRAPROWS). أيًا كانت الوظيفة التي تستخدمها ، فإن الوسيطة wrap_count هي التي تحدد الحد الأقصى لعدد القيم في كل عمود / صف.
على سبيل المثال ، لتحويل النطاق B4: B23 إلى صفيف ثنائي الأبعاد ، بحيث يحتوي كل عمود على 10 قيم كحد أقصى ، استخدم هذه الصيغة:
=WRAPCOLS(B4:B23, 10)
لإعادة ترتيب نفس النطاق حسب الصف ، بحيث يكون لكل صف 4 قيم كحد أقصى ، تكون الصيغة :
=WRAPROWS(B4:B23, 4)
توضح الصورة أدناه كيف يبدو هذا:
لوحة مفقودة في المصفوفة الناتجة
في حالة عدم وجود قيم كافية لملء جميع أعمدة / صفوف النطاق الناتج ، سيعود WRAPROWS و WRAPCOLS أخطاء # N / A للحفاظ على بنية المصفوفة ثنائية الأبعاد.
لتغيير الافتراضيالسلوك ، يمكنك توفير قيمة مخصصة للوسيطة الاختيارية pad_with .
على سبيل المثال ، لتحويل النطاق B4: B21 إلى مصفوفة ثنائية الأبعاد بحد أقصى 5 قيم للعرض ، ولوحة الأخير صف به شرطات إذا لم تكن هناك بيانات كافية لملئه ، استخدم هذه الصيغة:
=WRAPROWS(B4:B21, 5, "-")
لاستبدال القيم المفقودة بسلاسل ذات طول صفري (فراغات) ، الصيغة هي:
=WRAPROWS(B4:B21, 5, "")
يرجى مقارنة النتائج بالسلوك الافتراضي (الصيغة في D5) حيث تم حذف pad_with :
دمج عدة صفوف في النطاق ثنائي الأبعاد
لدمج بضعة صفوف منفصلة في مصفوفة ثنائية الأبعاد ، عليك أولاً تكديس الصفوف أفقيًا باستخدام وظيفة HSTACK ، ثم لف القيم باستخدام WRAPROWS أو WRAPCOLS.
على سبيل المثال ، لدمج القيم من 3 صفوف (B5: J5 و B7: G7 و B9: F9) والتفاف في أعمدة ، كل منها يحتوي على 10 قيم ، الصيغة هي:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
لدمج القيم من عدة صفوف في النطاق ثنائي الأبعاد حيث يحتوي كل صف على 5 قيم ، تأخذ الصيغة هذا الشكل:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C قم بتجميع عدة أعمدة في صفيف ثنائي الأبعاد
لدمج عدة أعمدة في نطاق ثنائي الأبعاد ، عليك أولاً تكديسها عموديًا باستخدام وظيفة VSTACK ، ثم لف القيم في صفوف (WRAPROWS) أو أعمدة (WRAPCOLS).
على سبيل المثال ، لدمج القيم من 3 أعمدة (B5: J5 و B7: G7 و B9: F9) في نطاق ثنائي الأبعاد حيث يحتوي كل عمود على 10 قيم ، تكون الصيغة:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
لدمج ملفنفس الأعمدة في نطاق ثنائي الأبعاد حيث يحتوي كل صف على 5 قيم ، استخدم هذه الصيغة:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
التفاف وفرز المصفوفة
في الحالة التي يكون فيها النطاق المصدر به قيم في ترتيب عشوائي بينما ترغب في فرز الإخراج ، تابع بهذه الطريقة:
- قم بفرز المصفوفة الأولية بالطريقة التي تريدها باستخدام وظيفة SORT.
- قم بتزويد المصفوفة التي تم فرزها إلى WRAPCOLS أو WRAPROWS.
على سبيل المثال ، لف النطاق B4: B23 في صفوف ، 4 قيم في كل منها ، وفرز النطاق الناتج من A إلى Z ، قم بإنشاء صيغة مثل:
=WRAPROWS(SORT(B4:B23), 4)
لالتفاف نفس النطاق في أعمدة ، 10 قيم في كل منها ، وفرز الناتج أبجديًا ، تكون الصيغة:
=WRAPCOLS(SORT(B4:B23), 10)
تبدو النتائج كما يلي :
نصيحة. لترتيب القيم في الصفيف الناتج في ترتيب تنازلي ، قم بتعيين الوسيطة الثالثة ( ترتيب_فرز ) للدالة SORT إلى -1.
بديل WRAPCOLS لـ Excel 365 - 2010
في إصدارات Excel القديمة حيث لا يتم دعم وظيفة WRAPCOLS ، يمكنك إنشاء الصيغة الخاصة بك لالتفاف القيم من مصفوفة أحادية البعد إلى أعمدة. يمكن القيام بذلك باستخدام 5 وظائف مختلفة معًا.
بديل WRAPCOLS لتحويل صف إلى نطاق ثنائي الأبعاد:
IFERROR (IF (ROW (A1) & gt؛ n ، "" ، INDEX ( row_range ،، ROW (A1) + (COLUMN (A1) -1) * n ))، "")بديل WRAPCOLS لتحويل عمود إلى ثنائي الأبعاد النطاق:
IFERROR (IF (ROW (A1) & gt؛ n ،"" ، INDEX ( column_range ، ROW (A1) + (COLUMN (A1) -1) * n )) ، "")حيث n هو الحد الأقصى لعدد القيم لكل عمود.
في الصورة أدناه ، نستخدم الصيغة التالية لتحويل نطاق من صف واحد (D4: J4) إلى مصفوفة من ثلاثة صفوف.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
وتغير هذه الصيغة نطاق عمود واحد (B4: B20) إلى صفيف مكون من خمسة صفوف:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
تحاكي الحلول المذكورة أعلاه صيغ WRAPCOLS المماثلة وتنتج نفس النتائج:
=WRAPCOLS(D4:J4, 3, "")
و
=WRAPCOLS(B4:B20, 5, "")
يرجى مراعاة أنه على عكس دالة WRAPCOLS للصفيف الديناميكي ، فإن الصيغ التقليدية تتبع نهج ذو صيغة واحدة وخلية واحدة. لذلك ، تم إدخال الصيغة الأولى في D8 ونسخ 3 صفوف لأسفل و 3 أعمدة إلى اليمين. يتم إدخال الصيغة الثانية في D14 ونسخ 5 صفوف لأسفل و 4 أعمدة إلى اليمين.
كيف تعمل هذه الصيغ
في قلب كلتا الصيغتين ، نستخدم دالة INDEX التي ترجع قيمة من الصفيف المقدم بناءً على رقم الصف والعمود:
INDEX (array، row_num، [column_num])نظرًا لأننا نتعامل مع مصفوفة من صف واحد ، يمكننا حذف الوسيطة row_num ، لذلك يتم تعيينها افتراضيًا على 1. الحيلة هي أن يكون لديك col_num يتم حسابها تلقائيًا لكل خلية يتم فيها نسخ الصيغة. وإليك كيفية القيام بذلك:
ROW(A1)+(COLUMN(A1)-1)*3)
تُرجع الدالة ROW رقم صف المرجع A1 ، وهو 1.
تُرجع الدالة COLUMN رقم العمود لـالمرجع A1 ، وهو أيضًا 1. طرح 1 يحولها إلى صفر. وضرب 0 في 3 يعطي 0.
ثم ، تضيف ما يصل إلى 1 ناتجًا عن ROW و 0 ناتجًا عن طريق COLUMN وتحصل على 1 نتيجة لذلك.
بهذه الطريقة ، صيغة INDEX في الجزء العلوي تخضع الخلية اليسرى للنطاق الوجهة (D8) لهذا التحويل:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
يتغير إلى
INDEX($D$4:$J$4, ,1)
وإرجاع القيمة من العمود الأول من المصفوفة المحددة ، وهي "التفاح" في D4.
عند نسخ الصيغة إلى الخلية D9 ، تتغير مراجع الخلية النسبية بناءً على موضع نسبي للصفوف والأعمدة بينما يظل مرجع النطاق المطلق بدون تغيير:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
يتحول إلى:
INDEX($D$4:$J$4,, 2+(1-1)*3))
يصبح:
INDEX($D$4:$J$4,, 2))
وإرجاع القيمة من العمود الثاني من المصفوفة المحددة ، وهو "المشمش" في E4.
تتحقق الدالة IF من رقم الصف وإذا كان أكبر من عدد الصفوف التي حددتها (3 في حالتنا) فتُرجع سلسلة فارغة ( "") ، وإلا فإن نتيجة الدالة INDEX:
IF(ROW(A1)>3, "", INDEX(…))
أخيرًا ، تعمل الدالة IFERROR على إصلاح الخطأ #REF! الخطأ الذي يحدث عندما يتم نسخ الصيغة إلى خلايا أكثر مما هو مطلوب بالفعل.
تعمل الصيغة الثانية التي تحول عمودًا إلى نطاق ثنائي الأبعاد بنفس المنطق. الفرق هو أنك تستخدم مجموعة ROW + COLUMN لمعرفة الوسيطة row_num لـ INDEX. المعلمة col_num ليست مطلوبة في هذه الحالة نظرًا لوجود فقطعمود واحد في الصفيف المصدر.
بديل WRAPROWS لـ Excel 365 - 2010
لالتفاف القيم من صفيف أحادي البعد إلى صفوف في Excel 2019 والإصدارات السابقة ، يمكنك استخدام البدائل التالية لوظيفة WRAPROWS.
تحويل صف إلى نطاق ثنائي الأبعاد:
IFERROR (IF (COLUMN (A1) & gt؛ n ، ""، INDEX ( row_range ،، COLUMN (A1) + (ROW (A1) -1) * n ))، "")تغيير عمود إلى نطاق ثنائي الأبعاد:
IFERROR (IF ( COLUMN (A1) & gt؛ n ، ""، INDEX ( column_range ، COLUMN (A1) + (ROW (A1) -1) * n )) ، "")حيث يمثل n الحد الأقصى لعدد القيم لكل صف.
في مجموعة البيانات النموذجية الخاصة بنا ، نستخدم الصيغة التالية لتحويل نطاق من صف واحد (D4 : J4) في نطاق من ثلاثة أعمدة. تهبط الصيغة في الخلية D8 ، ثم يتم نسخها عبر 3 أعمدة و 3 صفوف.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
لإعادة تشكيل نطاق أحادي العمود (B4: B20) في نطاق مكون من 5 أعمدة ، أدخل الصيغة أدناه في D14 واسحبها عبر 5 أعمدة و 4 صفوف.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
في Excel 365 ، يمكن تحقيق نفس النتائج باستخدام صيغ WRAPCOLS المكافئة:
=WRAPROWS(D4:J4, 3, "")
و
=WRAPROWS(B4:B20, 5, "")
كيف تعمل هذه الصيغ
بشكل أساسي ، تعمل هذه الصيغ كما في المثال السابق. يكمن الاختلاف في كيفية تحديد إحداثيات row_num و col_num للدالة INDEX:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
للحصول على رقم العمود العلوي الخلية اليسرى في النطاق الوجهة (D8) ، يمكنك استخدام هذاالتعبير:
COLUMN(A1)+(ROW(A1)-1)*3)
يتغير إلى:
1+ (1-1) * 3
ويعطي 1.
نتيجةً لذلك ، تُرجع الصيغة أدناه القيمة من العمود الأول للصفيف المحدد ، وهو "Apples":
INDEX($D$4:$J$4,, 1)
حتى الآن ، النتيجة هي نفسها كما في السابق مثال. لكن دعنا نرى ما يحدث في الخلايا الأخرى ...
في الخلية D9 ، تتغير مراجع الخلية النسبية على النحو التالي:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
لذلك ، تتحول الصيغة إلى:
يصبح INDEX($D$4:$J$4,, 1+(2-1)*3))
:
INDEX($D$4:$J$4,, 4))
ويعيد القيمة من العمود الرابع للصفيف المحدد ، وهو "Cherries" في G4.
تتحقق الدالة IF من رقم العمود وإذا كان أكبر من عدد الأعمدة الذي حددته ، فتُرجع سلسلة فارغة ("") ، وإلا فإن نتيجة الدالة INDEX:
IF(COLUMN(A1)>3, "", INDEX(…))
كلمسة نهائية ، تمنع IFERROR #REF! أخطاء من الظهور في خلايا "إضافية" إذا قمت بنسخ الصيغة إلى خلايا أكثر مما هو مطلوب بالفعل.
لا تعمل وظيفة WRAPCOLS أو WRAPROWS
إذا كانت وظائف "الالتفاف" غير متوفرة في Excel الخاص بك أو يؤدي إلى حدوث خطأ ، فمن المرجح أن يكون أحد الأسباب التالية.
#NAME؟ خطأ
في Excel 365 ، #NAME؟ قد يحدث خطأ لأنك أخطأت في كتابة اسم الوظيفة. في الإصدارات الأخرى ، يشير إلى أن الوظائف غير مدعومة. كحل بديل ، يمكنك استخدام بديل WRAPCOLS أو بديل WRAPROWS.
#VALUE! خطأ
حدث خطأ #VALUE إذا