جدول المحتويات
عندما يكون لدينا مجموعة بيانات كبيرة في مصنف Excel الخاص بنا ، يكون من الملائم في بعض الأحيان أن نتمكن من المرور عبر الصفوف لاستخراج النتائج المحددة التي نريد الحصول عليها. يعد تنفيذ VBA أكثر الطرق فعالية وأسرع وأمانًا لتشغيل أي عملية في Excel. في هذه المقالة ، سنعرض لك 11 طريقة مختلفة حول كيفية تكرار صفوف الجدول في Excel باستخدام ماكرو VBA .
تنزيل المصنف
يمكنك تنزيل مصنف Excel التدريبي المجاني من هنا.
حلقة عبر صفوف الجدول باستخدام VBA.xlsm
11 طريقة مع VBA للتكرار خلال صفوف الجدول في Excel
بعد هذا القسم ، ستتعلم كيفية تكرار صفوف الجدول باستخدام 11 طريقة مختلفة ، مثل التكرار عبر الصفوف حتى خلية فارغة ، قم بالتكرار خلال الصفوف حتى يتم العثور على قيمة محددة ، قم بعمل حلقة عبر الصفوف ولون خلية معينة وما إلى ذلك باستخدام ماكرو VBA في Excel.
أعلاه هو مثال لمجموعة البيانات التي ستتبعها هذه المقالة لوصف الأساليب.
1. قم بتضمين VBA للتكرار خلال كل خلية في كل صف من الجدول حسب الرقم المرجعي للخلية
إذا كنت تريد تكرار كل خلية في كل صف من الجدول في ورقة عمل Excel الخاصة بك واحصل على الرقم المرجعي للخلية باعتباره القيمة المرجعة ، ثم اتبع الخطوات الموضحة أدناه.
الخطوات:
- في البداية ، اضغط على Alt + F11 على لوحة المفاتيح أو اذهبمتغير.
9559
هذا الجزء من الكود موجود هنا للتكرار خلال الصفوف من 1 إلى 15. إذا عثر على الكلمة المحددة “ Edge ” فإنه يقوم بتلوين الخلية التي تحتوي على الكلمة. يستمر في القيام بذلك حتى ينتهي من مسح جميع البيانات من الصفوف 1 إلى 15 في البحث عن الكلمة.
اقرأ المزيد: كيفية استخدام صفيف جدول VLOOKUP استنادًا إلى قيمة الخلية في Excel
قراءات مماثلة
- هل توجد وظيفة TABLE في Excel؟
- كيفية تحويل جدول إلى قائمة في Excel (3 طرق سريعة)
- تحويل النطاق إلى جدول في Excel (5 طرق سهلة)
- استخدم الصيغة في جدول Excel بشكل فعال (مع 4 أمثلة)
- اسم جدول Excel: كل ما تريد معرفته
7. قم بتطبيق VBA للتكرار خلال كل صف ولون كل صف فردي في Excel
من القسم السابق ، تعلمنا كيفية تلوين خلية تحمل قيمة معينة. في هذا القسم ، سنتعلم كيفية إجراء حلقة خلال كل صف في الجدول ولون كل صف فردي باستخدام ماكرو VBA في Excel.
خطوات تنفيذ العملية موصوفة أدناه.
الخطوات:
- كما هو موضح من قبل ، افتح محرر Visual Basic من المطور tab و أدخل a Module في نافذة التعليمات البرمجية.
- ثم انسخ الكود التالي والصقه في نافذة الكود.
3477
كودك جاهز الآن للتشغيل.
- الآن ، قم بتشغيل الماكرو وانظر إلى الصورة التالية لرؤية الإخراج.
جميع الصفوف ذات الأرقام الفردية ملونة بعد التكرار خلال جميع الصفوف الموجودة في جدول ورقة العمل.
شرح كود VBA
2306
تحديد المتغير.
7797
حدد النطاق الذي سنعمل معه.
2048
يشير هذا الجزء من الكود إلى التكرار عبر جميع الصفوف ، بدءًا من الصف التالي للصف الحالي ، B4 . إذا كان تعديل قسمة أرقام الصفوف على 2 يساوي رقم الصف الذي تم إرجاعه المخزن في نوع عدد صحيح ، فإن هذا الرمز يلون جميع الصفوف التي يتم استخراجها بواسطة الحساب باستخدام مؤشر اللون المقدم في الكود. يستمر في التحرك عبر جميع الصفوف حتى يصل إلى نهاية النطاق.
٨. قم بتطبيق VBA للتكرار خلال الصفوف ولون كل صفوف زوجية في Excel
في القسم السابق ، تعلمنا كيفية تلوين كل صف فردي من الجدول. في هذا القسم ، سوف نتعلم كيفية إجراء حلقة خلال كل صف في الجدول ولون كل صف زوجي باستخدام ماكرو VBA في Excel.
تتم مناقشة خطوات تنفيذ العملية أدناه.
الخطوات:
- أولاً ، افتح محرر Visual Basic من علامة التبويب المطور ثم إدراج a Module في نافذة التعليمات البرمجية.
- ثم انسخ الكود التالي و الصقه في نافذة الكود.
3792
الرمز الخاص بك جاهز الآنتشغيل.
- التالي ، قم بتشغيل الماكرو وانظر إلى الصورة التالية لترى النتيجة.
كل الصفوف ذات الأرقام الزوجية ملونة بعد تكرار جميع الصفوف الموجودة في جدول ورقة العمل.
شرح كود VBA
7543
تحديد المتغير.
9963
حدد النطاق الذي سنعمل معه.
3915
يبدأ هذا الجزء من الكود في التكرار بعد الصفوف الثلاثة من الصف الحالي ، B4 . تقوم بتلوينها أولاً ثم تزيد عدد الصفوف بمقدار 2 وتحافظ على تلوينها حتى تصل إلى الصف الأخير من مجموعة البيانات.
9. قم بتطبيق ماكرو على التكرار خلال الصفوف حتى الخلية الفارغة في Excel
إذا كنت تريد أن تعمل التعليمات البرمجية الخاصة بك كما لو كانت تتكرر عبر جميع صفوف الجدول وتتوقف عندما تصل إلى خلية فارغة ، فهذا القسم لك. يمكنك تنفيذ هذه المهمة باستخدام كل من FOR Loop و Do-until Loop في Excel VBA .
9.1. مع FOR Loop
الخطوات إلى حلقة من الصفوف في جدول حتى خلية فارغة مع حلقة FOR في VBA Excel مذكورة أدناه.
الخطوات:
- في البداية ، افتح محرر Visual Basic من علامة التبويب المطور ثم إدراج a Module في نافذة الكود.
- بعد ذلك ، انسخ الكود التالي و الصقه في نافذة الكود.
4647
الكود الخاص بك جاهز الآن للتشغيل.
- ثم ، تشغيل الماكرو والنتيجة معروضة في الصورة المتحركة أدناه. وبمجرد وصولها إلى الخلية الفارغة ، الخلية B8 ، أوقفت التكرار .
VBA Code Explanation
2626
حدد المتغير.
4309
قم بإيقاف تشغيل حدث تحديث الشاشة.
9030
قم بتخزين جميع الصفوف بدءًا من الخلية B4 حتى آخرها.
7522
حدد الخلية B4 .
3392
يبدأ هذا الجزء من التعليمات البرمجية بالتكرار عبر جميع الصفوف. عندما تعثر على خلية فارغة في صف ، تحددها وتستمر في مسح الصفوف حتى تصل إلى النهاية.
6741
قم بتشغيل حدث تحديث الشاشة.
9.2. باستخدام حلقة التنفيذ حتى التكرار
الخطوات إلى حلقة من الصفوف حتى خلية فارغة مع حلقة التنفيذ حتى في فبا أدناه.
الخطوات:
- أولاً ، افتح محرر Visual Basic من علامة التبويب المطور ثم أدخل a الوحدة النمطية في نافذة التعليمات البرمجية.
- ثم ، انسخ الكود التالي و الصقه في نافذة الكود.
2816
التعليمات البرمجية الخاصة بك جاهزة الآن للتشغيل.
- لاحقًا ، قم بتشغيل الماكرو. النتيجة معروضة في الصورة المتحركة التالية.
بعد تشغيل الماكرو ، بدأت في المرور عبر جميع الصفوف في الجدول ومرة واحدة وصلت إلى الخلية الفارغة ، الخلية B8 ، أوقفت التكرار .
كود VBAالشرح
7741
حدد الخلية التي سنعمل منها.
7003
يبدأ ويستمر في التكرار حتى يتم العثور على خلية فارغة.
2252
عندما تكون الخلية فارغة وجدت في صف ثم حدده وأوقف التكرار.
10. ماكرو VBA للتكرار خلال الصفوف حتى عدة خلايا فارغة في Excel
في القسم السابق ، تعلمت كيفية إيقاف الحلقة عند العثور على خلية فارغة. ولكن ماذا لو كنت لا تريد إيقاف التكرار حتى يتم العثور على خلايا فارغة متعددة بدلاً من خلية واحدة فقط.
الخطوات من أجل تكرار الصفوف حتى يتم العثور على عدة خلايا فارغة في جدول مع VBA Excel موضحة أدناه.
الخطوات:
- أولاً ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل a Module في نافذة التعليمات البرمجية.
- ثم انسخ الكود التالي و الصق في نافذة الكود.
8291
كودك جاهز الآن للتشغيل.
- الآن ، قم بتشغيل الماكرو وانظر الصورة المتحركة التالية للإخراج.
بعد تشغيل الماكرو ، لم يتوقف عند الخلية الفارغة الأولى ، الخلية B8 . توقف عند العثور على خليتين فارغتين متتاليتين في الخلية B16 .
شرح رمز VBA
9110
حدد الخلية الذي سنعمل منه.
8975
يبدأ ويستمر في التكرار حتى يتم العثور على خليتين فارغتين متتاليتين.
3938
عند العثور على خليتين فارغتين متتاليتين ، ثمحدده وأوقف التكرار.
11. قم بتضمين VBA للتكرار الحلقي عبر الصفوف عن طريق ربط جميع الأعمدة حتى الفراغ في Excel
سيوضح لك هذا القسم كيفية إجراء تكرار عبر جميع الصفوف في جدول وسلسلة جميع الأعمدة حتى خلية فارغة تم العثور على مع VBA Excel.
دعونا نتعلم كيفية القيام بذلك باستخدام ماكرو VBA في Excel.
الخطوات:
- في البداية ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل a Module في نافذة الكود.
- ثم انسخ الكود التالي و الصقه في نافذة الكود.
9938
الكود الخاص بك الآن جاهز للتشغيل.
- لاحقًا ، قم بتشغيل الماكرو وشاهد الصورة المتحركة التالية للنتيجة.
كما ترى من الصورة المتحركة أعلاه ، هناك نافذة منبثقة MsgBox توضح لك القيمة المتسلسلة لجميع الأعمدة الموجودة في كل صف من جدول ورقة عمل Excel الخاصة بك. لكنه توقف بمجرد وصوله إلى الخلية الفارغة .
شرح كود VBA
3270
تحديد المتغيرات.
5203
عيّن اسم الورقة الذي سنعمل معه (" ConcatenatingAllColUntilBlank " هو اسم الورقة في المصنف).
8870
حدد النطاق الذي سنعمل معه.
2091
هذا الجزء من الكود يبدأ الحلقة مع المصفوفة. تستمر في التكرار حتى تقوم بإرجاع أكبر خط منخفض في المصفوفة والحد الأدنى لـالبعد الأول. ثم يدخل في تكرار استخراج الحد الأدنى للبعد الثاني. بعد ذلك ، تمرر جميع القيم المستخرجة في المتغير iResult من خلال تسلسلها وإلقاء النتيجة في MsgBox. يستمر في فعل ذلك حتى يعثر على خلية فارغة.
الخاتمة
في الختام ، أوضحت لك هذه المقالة 11 طريقة فعالة حول كيفية تكرار الصفوف من جدول في Excel مع VBA الماكرو . آمل أن يكون هذا المقال مفيدًا جدًا لك. لا تتردد في طرح أي أسئلة بخصوص الموضوع.
إلى علامة التبويب المطور - & GT. Visual Basic لفتح محرر Visual Basic .
- التالي ، في نافذة التعليمات البرمجية المنبثقة ، من شريط القوائم ، انقر فوق إدراج - & GT. الوحدة النمطية .
- ثم ، انسخ الكود التالي و الصقه في الكود نافذة.
8066
كودك جاهز الآن للتشغيل.
- الآن ، اضغط F5 على لوحة المفاتيح أو من شريط القائمة حدد تشغيل - & GT. تشغيل Sub / UserForm . يمكنك أيضًا النقر فوق رمز التشغيل الصغير في شريط القائمة الفرعية لتشغيل الماكرو.
- Or to شاهد وقارن مجموعة البيانات والنتيجة بصريًا ، يمكنك حفظ الكود و العودة إلى ورقة العمل ذات الأهمية.
- من هناك ، يمكنك النقر فوق وحدات الماكرو من علامة التبويب المطور ، حدد اسم الماكرو ، ثم انقر فوق تشغيل .
بعد تنفيذ التعليمات البرمجية بنجاح ، انظر إلى الصورة المتحركة أعلاه لترى النتيجة. ستكون هناك نافذة منبثقة MsgBox تعرض لك الرقم المرجعي للخلية لكل خلية من كل صف من الجدول في ورقة Excel.
شرح كود VBA
6110
للحصول على رقم الصف الأخير في الجدول عن طريق البحث في العمود B.
6499
تعيين رقم الصف 4 ، من حيث تبدأ بياناتنا.
3717
للتكرار من الصف الأول.
6199
تعيين رقم العمود 2 ، من حيث تبدأ بياناتنا.
2165
ابدأ تكرار الصفوف للحصول على آخررقم العمود عن طريق تقييم الصف الحالي حتى الصف الأخير.
8317
زيادة تكرار العمود من الصف الأول حتى الصف الأخير.
4298
هذا الجزء من التعليمات البرمجية يعمل على معالجة ، وزيادة بعد كل التكرار وعرض نتيجة الكود.
اقرأ المزيد: كيفية إضافة صف جديد تلقائيًا في جدول Excel
2 . قم بتنفيذ VBA للتكرار خلال كل خلية في كل صف حسب القيمة
إذا كنت تريد إجراء تكرار خلال كل خلية في كل صف من الجدول ورمي القيمة الموجودة في الخلايا كقيمة إرجاع ، سيساعدك هذا القسم في معرفة كيفية القيام بذلك باستخدام VBA Excel.
يمكنك القيام بذلك باستخدام ListObject ومع DataBodyRange خاصية VBA . سنعرض لك كود الماكرو مع كل من الكائن والممتلكات.
2.1. باستخدام ListObject
الخطوات للتكرار خلال كل خلية في كل صف من الجدول حسب قيمة الخلية مع ListObject في VBA Excel مذكورة أدناه.
الخطوات:
- بنفس الطريقة السابقة ، افتح محرر Visual Basic من علامة التبويب المطور و أدخل a الوحدة النمطية في نافذة التعليمات البرمجية.
- ثم ، في نافذة التعليمات البرمجية ، انسخ الكود التالي و الصق
3044
الكود الخاص بك جاهز الآن للتشغيل.
- بعد ذلك ، تشغيل الماكرو كما أظهرنا لك في القسم أعلاه. تظهر النتيجة في صورة gifأدناه.
ستكون هناك نافذة منبثقة MsgBox تعرض لك القيمة التي تحملها كل خلية من كل صف من الجدول في ورقة Excel.
شرح كود VBA
1239
حدد المتغيرات.
3881
هذه القطعة من الكود يبدأ أولاً بالتكرار عبر الصفوف في الجدول (" TblStudents " هو اسم الجدول الخاص بنا). ثم يدخل أعمدة لكل صف. بعد ذلك ، قم بتمرير قيمة الخلية في MsgBox. ثم انتقل إلى العمود التالي. بعد الانتهاء من التكرار عبر جميع الأعمدة في صف واحد ، ينتقل إلى الصف التالي ويستمر في عملية التكرار حتى الصف الأخير.
2.2. باستخدام خاصية DataBodyRange
لتكون أكثر تحديدًا مع البيانات المستخرجة من الجدول ، يمكنك استخدام خاصية DataBodyRange الخاصة بـ ListObject . ستطرح لك خاصية DataBodyRange النتيجة التي تحتوي على النطاق من القائمة بين صف الرأس وصف الإدخال.
الخطوات الخاصة بكيفية إجراء حلقة خلال كل خلية في كل صف جدول حسب قيمة الخلية مع DataBodyRange في VBA Excel مذكورة أدناه.
الخطوات:
- كما هو موضح قبل ذلك ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل وحدة في نافذة التعليمات البرمجية.
- ثم ، انسخ الكود التالي و الصق في نافذة التعليمات البرمجية.
9925
الكود الخاص بك جاهز الآن للتشغيل.
- لاحقًا ، قم بتشغيل الماكرو وانظر إلى gif التالية لرؤية الإخراج.
سيكون هناك نافذة منبثقة MsgBox يوضح لك القيمة التي تحملها كل خلية من كل صف من الجدول في ورقة Excel.
شرح كود VBA
7393
تحديد المتغير.
7311
يبدأ هذا الجزء من التعليمات البرمجية أولاً بالتكرار عبر الصفوف في الجدول (" TblStdnt " هو اسم الجدول الخاص بنا) وإرجاع نطاق من القيم باستثناء صف رأس الجدول. ثم قم بتمرير قيمة النطاق في MsgBox. ثم ينتقل إلى الصف التالي لاستخراج النطاق ويستمر في عملية التكرار حتى الصف الأخير.
3. قم بتطبيق ماكرو VBA على التكرار خلال الصفوف عن طريق ربط الأعمدة في Excel
سيوضح هذا القسم كيفية إجراء تكرار عبر الصفوف في جدول عن طريق ربط الأعمدة بالعمود الأول من مجموعة البيانات الخاصة بك في Excel.
على سبيل المثال ، بالنسبة لمجموعة البيانات الخاصة بنا ، أولاً ، سنقوم بالتكرار من خلال John في الخلية B5 و 101 في الخلية C5 عن طريق تجميعها ثم تكرارها من خلال John in Cell B5 و 89 في الخلية D5 من خلال ربطهما من الصف 5 .
دعنا نوضح لك كيف يمكنك القيام بذلك باستخدام VBA الماكرو في Excel.
الخطوات:
- في البداية ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل a Module في نافذة التعليمات البرمجية.
- ثانيًا ، في نافذة التعليمات البرمجية ، انسخ التالي الشفرةو الصق .
6413
كودك جاهز الآن للتشغيل.
- ثالثًا ، تشغيل الماكرو. انظر إلى gif أدناه لمعرفة النتيجة.
ستكون هناك نافذة منبثقة MsgBox تعرض لك القيمة المتسلسلة من الخلايا من العمود الأول والثاني ( John في الخلية B5 من العمود B و 101 في الخلية C5 من العمود C ) ثم القيمة المتسلسلة من الخلايا من العمود الأول والثالث ( John في الخلية B5 من العمود B و 89 في الخلية D5 من العمود D ) من رقم الصف 5 من مجموعة البيانات الخاصة بك. وستستمر عملية التسلسل هذه حتى تصل إلى الصف الأخير من الجدول.
VBA Code Explanation
9671
حدد المتغير.
1876
ثم يحدد الكود الجدول من الورقة النشطة (" TblConcatenate " في اسم الجدول الخاص بنا).
4748
بعد ذلك ، يبدأ في تكرار كل صف باستثناء رأس العمود. إذا وجد التكرار تطابقًا في النطاق بين رأس العمود والصفوف ، فإنه يخزن القيمة في متغير iValue .
8045
إذا لم يتم استيفاء الشرط أعلاه ، يرمي الرمز القيمة في MsgBox وينهي الشرط. بعد ذلك ، ينتقل إلى التكرار الحلقي في نطاق آخر ويستمر في التكرار حتى صف النهاية. بمجرد وصوله إلى صف النهاية ، ينهي الماكرو تنفيذ التعليمات البرمجية.
4. قم بتضمين ماكرو لتكرارمن خلال الصفوف عن طريق ربط جميع الأعمدة في جدول في Excel
في هذا القسم ، سوف نتعلم كيفية ربط جميع الأعمدة التي يحمل كل صف في مجموعة البيانات مع VBA الماكرو في Excel.
خطوات التنفيذ الموضحة أدناه.
الخطوات:
- أولاً ، افتح Visual Basic Editor من علامة التبويب Developer و أدخل a Module في نافذة التعليمات البرمجية.
- ثم انسخ الكود التالي و الصق في نافذة الكود.
8715
الكود الخاص بك جاهز الآن للتشغيل.
- التالي ، تشغيل كود الماكرو.
كما ترى من الصورة المتحركة أعلاه ، هناك نافذة منبثقة MsgBox تعرض لك القيمة المتسلسلة لجميع الأعمدة الموجودة في كل صف من جدول ورقة عمل Excel.
شرح كود VBA
5875
تحديد المتغيرات.
3730
تعيين اسم الورقة الذي سنعمل معه (" ConcatenatingAllCol " هو اسم الورقة في المصنف).
9776
De حسنًا اسم الجدول الذي سنعمل معه (" TblConcatenateAll " هو اسم الجدول في مجموعة البيانات الخاصة بنا).
9437
يبدأ التكرار خلال كل صف من الجدول.
6889
يبدأ التكرار خلال كل عمود في كل صف من الجدول.
8336
قم بتخزين النتيجة عن طريق تقاطع القيم التي يحملها كل عمود في كل صف. بعد المسح من خلال جميع الأعمدة الموجودة في كل صف ، مررينتج عنه MsgBox. ثم يبدأ مرة أخرى في التكرار في الصف التالي ويستمر في التكرار حتى يصل إلى الصف الأخير من الجدول.
اقرأ المزيد: كيفية فرز أعمدة متعددة من الجدول باستخدام Excel VBA (طريقتان)
5. أوقف التكرار إذا تم العثور على القيمة بالتكرار عبر صفوف الجدول باستخدام VBA Macro
افترض أنك تريد التكرار عبر صفوف الجدول وإيقاف التكرار عند العثور على قيمة معينة . يمكنك القيام بذلك باستخدام رمز ماكرو بسيط.
دعنا نتعلم كيفية القيام بذلك VBA في Excel.
الخطوات:
- في البداية ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل وحدة في نافذة التعليمات البرمجية.
- ثم ، في نافذة التعليمات البرمجية ، انسخ الكود التالي و الصقه .
1494
الرمز الخاص بك جاهز الآن للتشغيل .
- لاحقًا ، قم بتشغيل الماكرو.
- سيبدأ الحلقة ويوقفها عندما يعثر على القيمة المحددة (“ Edge ”) في النطاق ويرمي النتيجة في MsgBox .
كما ترى من الصورة أعلاه ، هناك نافذة منبثقة MsgBox تعرض لك عنوان الخلية ، $ B $ 10 ، حيث وجدنا القيمة المحددة ، “ Edge ” .
شرح كود VBA
8144
حدد متغير.
1725
هذا الجزء من الكود موجود هنا للتكرار خلال الصفوف من 1 إلى 15. إذا وجد الكلمة المحددة" Edge " ثم يمرر النتيجة بعنوان الخلية الذي يحمل الكلمة. يستمر في القيام بذلك حتى ينتهي من مسح جميع البيانات من الصفوف 1 إلى 15 في البحث عن الكلمة.
اقرأ المزيد: كيفية إدراج أو حذف صفوف وأعمدة من جدول Excel
6. VBA للتكرار خلال كل صف ولون قيمة معينة في Excel
ماذا لو كنت لا تريد إلقاء عنوان الخلية للقيمة المحددة في MsgBox؟ قد ترغب في تلوين الخلية التي تحمل القيمة التي تبحث عنها.
دعونا نتعلم كيفية القيام بذلك باستخدام الماكرو VBA .
الخطوات:
- بنفس الطريقة السابقة ، افتح محرر Visual Basic من علامة التبويب المطور و إدراج a Module في نافذة التعليمات البرمجية.
- ثم ، انسخ الكود التالي و الصقه في نافذة الكود.
8220
الكود الخاص بك جاهز الآن للتشغيل.
- بعد ذلك ، قم بتشغيل الماكرو.
- سيبدأ الحلقة ويوقفها عندما تعثر على القيمة المحددة (" Edge ") في النطاق و لون الخلية مع ColourIndex الذي قدمته في الكود.
كما ترى من الصورة أعلاه ، C ell B10 ، حيث وجدنا القيمة المحددة ، " Edge " ملون بعد تنفيذ الكود.
شرح كود VBA
2679
حدد