كيفية فرز النطاق باستخدام VBA في Excel (6 أمثلة)

Hugh West

معرفة كيفية فرز النطاق باستخدام VBA في Excel هو توفير الوقت والجهد في حساباتنا اليومية. على الرغم من أن Excel يوفر وسيلة فرز بشكل افتراضي. باستخدام طريقة Range.Sort ، يمكننا الوصول إلى عدة معلمات لفرز مجموعة بيانات بخيارات أكثر من المعتاد.

تنزيل Practice Workbook

تنزيل هذا المصنف التدريبي للتمرين أثناء قراءة هذه المقالة.

نطاق الفرز في Excel.xlsm

مقدمة عن عبارة Range.Sort في Excel VBA

الهدف: لفرز نطاق من بيانات الخلية.

البنية:

التعبير الفرز ( Key1 ، Order1 ، Key2 ، اكتب ، Order2 ، Key3 ، Order3 ، Header ، OrderCustom ، MatchCase ، الاتجاه ، SortMethod ، DataOption1 ، DataOption2 ، DataOption3 )

هنا ، يمثل التعبير كائن نطاق أي خلية أو صف أو عمود أو مجموعة من الخلايا.

الوسيطات:

نحتاج إلى توفير ثلاث معلمات رئيسية لطريقة النطاق Range.Sort . هم-

المفتاح - نطاق الخلايا من أعمدة مفردة أو متعددة نحتاج إلى الفرز.

ترتيب - حدد ترتيب الفرز إما تصاعدي أو تنازلي.

رأس - قم بتعريف ما إذا كانت الأعمدة المراد فرزها تحتوي على رأس أم لا.

6 أمثلة على نطاق الفرز في Excel VBA

فيهذه المقالة ، كمجموعة بيانات ، سنستخدم قائمة بأسماء الأشخاص مع تاريخ ميلادهم وأعمارهم. سنطبق طرقًا مختلفة لفرز مجموعة البيانات. دعنا ننتقل إلى المقالة ونتدرب على إتقان هذه الطرق.

1. فرز نطاق عمود واحد باستخدام Excel VBA

في هذا المثال ، سنقوم بفرز الأشخاص من الأقدم إلى الأصغر . دعنا نتبع الخطوات لاستخدام النطاق . طريقة الفرز التي ستقوم بفرز عمود العمر في ترتيب تنازلي .

الخطوات:

  • انتقل إلى علامة تبويب المطور في شريط Excel إلى انقر فوق في Visual Basic

  • ثم اختر خيار الوحدة النمطية من علامة التبويب إدراج لفتح وحدة نمطية جديدة .

الآن ، سنضع الكود الخاص بنا في فرز نطاق العمود العمر .

1.1 العمود برأس

ضع الكود التالي في محرر الكود المرئي.

9440

اضغط على F5 أو انقر فوق الزر تشغيل من أجل تنفيذ الرمز.

الشرح:

في الكود أعلاه ، نضع-

Expression (Range object) = Range (“D4: D11”) ؛ العمود العمر برأس في الخلية D4 وقيم في D5: D11.

المفتاح = النطاق ("D4") ؛ المفتاح للفرز .

الترتيب = xlDescending ؛ كما نريد فرز قيم من الأكبر إلى الأدنى قمنا بتعيين ترتيب الفرز كـ تنازلي.

Header = xlYes؛ في لقطة الشاشة التالية ، يمكننا أن نرى أن مجموعة البيانات بها header لكل عمود من أعمدة .

1.2 Column without Header

ضع ما يلي في محرر الكود المرئي.

8479

اضغط على F5 أو انقر فوق الزر تشغيل من أجل تنفيذ .

الشرح:

في الكود أعلاه ، نضع-

التعبير (كائن النطاق) = المدى (“D4 : D10 ") ؛ عمود العمر بدون رأس به قيم في D4: D10.

مفتاح = المدى ("D4") ؛ المفتاح للفرز .

الترتيب = xlDescending ؛ كما نريد فرز قيم من الأكبر إلى الأدنى قمنا بتعيين ترتيب الفرز على أنه تنازليًا.

Header = xlNo ؛ في لقطة الشاشة التالية ، يمكننا أن نرى أن مجموعة البيانات لا تحتوي على رأس .

المحتوى المرتبط: كيفية فرز الأعمدة في Excel بدون خلط البيانات (3 طرق)

2. استخدام كود VBA لفرز نطاق أعمدة متعددة في Excel

لإظهار الفرز في أعمدة متعددة ، نحتاج إلى تعديل لدينا مجموعة البيانات قليلاً. أدخلنا بضعة صفوف جديدة . في مجموعة البيانات المعدلة ، تحتوي الصفوف 7 و 8 و و 9 على قيم نفسها لتاريخ الميلاد والأعمار ولكن ثلاثة أسماء مختلفة . هذه الأسماء هي ليست بأي ترتيب محدد تصاعديًا أو تنازليًا.

في هذا المثال ، سنقوم بترتيب الأسماء بترتيب تصاعدي . لنقم بتشغيل الكود التالي في محرر Visual basic:

1662

Explanation:

In the above لقطة شاشة ، يمكننا أن نرى أن الأعمار الموجودة في العمود D تم فرزها بترتيب تنازليًا . أضفنا معلمتين إضافيتين في الكود السابق.

Key2: = Range (“B4”) ، مفتاح فرز الأسماء.

Order2: = xlAscending ، الترتيب لـ أسماء الاختصار .

نتيجة لذلك ، نرى أسماء في الصفوف 7 و 8 و 9 الآن أبجديًا مرتبة بترتيب تصاعدي .

في لقطة الشاشة التالية ، قمنا بتغيير قيمة من معلمة Order2 إلى فرز الأسماء في تنازليًا الترتيب.

اقرأ المزيد: كيفية فرز أعمدة متعددة في Excel (5 طرق سريعة)

3. انقر نقرًا مزدوجًا فوق الرأس لفرز نطاق العمود في Excel VBA

لا تسمح ميزة الفرز الافتراضية في Excel بفرز القيم للعمود حسب النقر المزدوج على رأس العمود . لكن باستخدام كود VBA يمكننا تحقيق ذلك. دعنا نوضح هذه الوظيفة من خلال تطبيق الكود التالي.

4154

في هذا الرمز ، استخدمنا حدث BeforeDoubleClick لتعطيل الازدواج المعتاد - انقر فوق وهو بدء وضع التحرير للخلية. مع هذا الحدثقيد التشغيل ، إذا كنا مزدوجًا - انقر فوق على أي من رؤوس الأعمدة فإنه يقوم بفرز بيانات العمود بترتيب تصاعدي .

اقرأ المزيد: VBA لفرز العمود في Excel (4 طرق)

قراءات مماثلة:

  • كيفية إضافة زر فرز في Excel (7 طرق)
  • فرز قائمة فريدة في Excel (10 طرق مفيدة)
  • كيف لاستخدام وظيفة الفرز في Excel VBA (8 أمثلة مناسبة)
  • فرز التكرارات في Excel (الأعمدة والصفوف)
  • الفرز العشوائي في Excel ( الصيغ + VBA)

4. فرز نطاق العمود استنادًا إلى لون الخلفية باستخدام Excel VBA

يمكننا فرز نطاق من الخلايا في عمود استنادًا إلى على لون الخلفية . للقيام بذلك ، نحتاج إلى إضافة معلمة تسمى SortOn والتي لها قيمة xlSortOnCellColor . لإثبات الفرز ، قمنا أولاً بتعيين ألوان خلفية مختلفة إلى صفوف مجموعة البيانات .

ثم في البصرية الأساسية محرر الكود انسخ الكود التالي واضغط F5 لتشغيله.

6607

في لقطة الشاشة التالية ، يمكننا رؤية مجموعة البيانات المفروزة القائمة على لون الخلفية.

التفسير:

  • في هذا المثال ، قمنا بتسمية ورقة العمل " الخلفية ". لذلك ، في الكود ، وضعنا " الخلفية " كاسم ورقة العمل النشطة .
  • قمنا بتعيين B4 كمفتاح و B4: D10 مثل النطاق . سيقوم الكود بفرز البيانات بناءً على المفتاح.
  • نظرًا لأننا لم نحدد معلمة الرأس ، يتم تشغيل الكود الافتراضي بلا رأس.
  • لقد قمنا بتعيين المعلمة ترتيب على أنها تصاعديًا ، لذلك قامت بفرز البيانات من القيم الأدنى إلى الأعلى .

قراءة المزيد: كيفية الفرز حسب اللون في Excel (4 معايير)

5. تطبيق كود VBA لفرز نطاق الأعمدة استنادًا إلى لون الخط

من خلال تطبيق كود VBA ، يمكننا فرز مجموعة البيانات الخاصة بنا بناءً على لون الخط . أولاً ، نحتاج إلى تلوين صفوف مختلفة لتوضيح المثال.

قم بتطبيق الكود أدناه لفرز مجموعة البيانات بناءً على لون الخط .

4359

التفسير:

  • في هذا على سبيل المثال ، قمنا بتسمية ورقة العمل لون الخط ”. لذلك ، في الكود ، وضعنا " fontcolor " كاسم ورقة العمل النشطة .
  • قمنا بتعيين B4 كمفتاح و B4: D11 كنطاق . سيقوم الكود بفرز البيانات بناءً على المفتاح.
  • في هذا المثال ، حددنا أيضًا معلمة الرأس كـ xlYes .
  • هنا ، قمنا بتعيين ترتيب المعلمة تصاعديًا ، لذا قامت بفرز البيانات من القيم الأدنى إلى الأعلى .
  • قيمة المعلمة SortOn هي
  • تحمل معلمة الاتجاه القيمة xlTopToBottom لأنها إلزامية. له قيمةمن 0 إلى 255 .

اقرأ المزيد: كيفية فرز عمودين في Excel لمطابقتهما (كلاهما بالضبط والمطابقة الجزئية)

6. تغيير الاتجاه إلى نطاق الفرز باستخدام Excel VBA

باستخدام معلمة الاتجاه ، يمكننا تغيير الطريقة التي نريد بها فرز البيانات. في هذا المثال ، لدينا نقلنا مجموعة البيانات الخاصة بنا إلى فرز أفقيًا .

دعونا نضع اتبع التعليمات البرمجية في محرر فيجوال بيسك واضغط على F5 لتشغيله.

1707

هنا فرزنا البيانات على أساس الصف العمر بالترتيب تصاعديًا من يسار إلى يمين . في الكود ، قمنا بتعيين معلمة الاتجاه كـ xlSortRows .

المحتوى المرتبط: كيفية الفرز التلقائي لأعمدة متعددة في Excel (3 طرق)

أشياء يجب تذكرها

  • المعلمة SortOn التي استخدمناها في الفرز نطاق الأعمدة استنادًا إلى لون الخلفية و لون الخط يمكن استخدامه فقط بواسطة كائن ورقة العمل . لا يمكننا استخدامه مع كائن النطاق .
  • يفرز الحدث BeforeDoubleClick البيانات فقط في تصاعديًا.

خاتمة

الآن ، نحن نعرف كيفية فرز النطاق باستخدام VBA في Excel. نأمل أن يشجعك ذلك على استخدام هذا بثقة أكبر. أي أسئلة أو اقتراحات لا تنسى وضعها في مربع التعليق أدناه.

هيو ويست مدرب ومحلل إكسل ذو خبرة عالية ولديه أكثر من 10 سنوات من الخبرة في هذا المجال. حاصل على درجة البكالوريوس في المحاسبة والمالية ودرجة الماجستير في إدارة الأعمال. لدى هيو شغف بالتدريس وقد طور منهجًا تعليميًا فريدًا يسهل اتباعه وفهمه. ساعدت معرفته الخبيرة ببرنامج Excel الآلاف من الطلاب والمهنيين في جميع أنحاء العالم على تحسين مهاراتهم والتميز في حياتهم المهنية. من خلال مدونته ، يشارك Hugh معرفته مع العالم ، ويقدم دروسًا مجانية في Excel وتدريبًا عبر الإنترنت لمساعدة الأفراد والشركات على تحقيق إمكاناتهم الكاملة.