اكسل - ماكرو لتجميع حسب العمود والقيم المبلغ

يشتمل برنامج Microsoft Office على برنامج Microsoft Excel وهو عبارة عن تطبيق جداول بيانات يضم جداول رسومية وحسابات ولغة برمجة ماكرو تسمى VBA (أساسيات Visual للتطبيقات) وجداول محورية. يتم استخدام جدول محوري لسرد البيانات. يتعرف ويلخص تلك البيانات للحصول على نتائج محددة. يمثل الماكرو قائمة بالأوامر أو الإجراءات لجعل البيانات الطويلة أو المهام المتكررة في برنامج Excel Office أسرع ؛ يمكن تشغيل هذا وقتما تحتاج إلى تنفيذ المهمة. يأخذ القيم ، ينفذ العملية المطلوبة ويعيد القيمة وفقًا لذلك. إذا كنت ترغب في كتابة ماكرو للتجميع حسب العمود وقيمة المجموع ، فما عليك سوى بدء تشغيل الماكرو باستخدام الأوامر ذات الصلة.

القضية

أحتاج إلى كتابة ماكرو للمثال التالي:

 السلعة الكمية الطول أ 1 100 أ 1 100 ب 2 200 ب 1 100 ب 5 100 ج 4 200 ج 2 100 ج 1 200 ج 3 100 

في الأساس ، أرغب في التجميع حسب العمود A (أي عنصر) والعمود C (أي الطول) وأريد أيضًا إضافة إجمالي كل تغيير في الطول ، لأحد العناصر. في هذه الحالة ، ستكون النتيجة في الورقة الجديدة كما يلي:

 عدد الكميات الطول أ 2 100 ب 2 200 ب 6 100 ج 5 200 ج 5 100 

نأمل أن يكون هذا منطقيا.

يمكن لأي شخص أن يساعدني في كتابة ماكرو إكسل لهذا من فضلك؟

حل

جرب هذا

افتراض:

  • 1. عند بدء تشغيل ماكرو ، تكون الورقة النشطة من حيث سيتم نسخ البيانات منها هي الورقة النشطة
  • 2. تشير الخلية الفارغة في العمود A إلى نهاية البيانات
  • 3. تريد لصق الورقة 3 (صحيح في الماكرو إذا لم يكن الأمر كذلك)

 Sub consolidateData () خافت lRow طويل خافت ItemRow1 ، ItemRow2 باسم خيط خيطي lengthRow1 ، lengthRow2 كأعمدة سلسلة ("A: C"). حدد Select.Copy Sheets ("Sheet3"). حدد Range ("A1"). حدد ActiveSheet .لصق الخلايا. حدد التحديد. فرز _ Key1: = النطاق ("A2") ، Order1: = xlAscending ، _ Key2: = Range ("C2") ، Order2: = xlDescending ، _ Header: = xlYes ، OrderCustom: = 1 ، _ MatchCase: = False، Orientation: = xlTopToBottom، _ DataOption1: = xlSortNormal lRow = 2 Do While Do (Cells (lRow، 1) "") ItemRow1 = Cells (lRow، "A") ItemRow2 = Cells (lRow + 1، "A") lengthRow1 = خلايا (lRow ، "C") lengthRow2 = خلايا (lRow + 1 ، "C") إذا ((ItemRow1 = ItemRow2) و (lengthRow1 = lengthRow2)) ثم الخلايا (lRow ، "B") = خلايا (lRow ، "B") + خلايا (lRow + 1 ، "B") صفوف (lRow + 1). حذف آخر lRow = lRow + 1 End If Loop End Sub 

ملحوظة

بفضل rizvisa1 لهذه النصيحة في المنتدى.

المقال السابق المقالة القادمة

نصائح الأعلى