جدول المحتويات
يوضح البرنامج التعليمي كيفية تمييز الكلمات المكررة أو السلاسل النصية داخل خلية باستخدام VBA.
يتيح التنسيق الشرطي لـ Excel إمكانية تمييز التكرارات بكل طريقة ممكنة يمكنك التفكير فيها: مع التكرارات الأولى أو بدونها ، في عمود واحد أو عدة أعمدة ، وخلايا مكررة متتالية ، وصفوف كاملة بناءً على قيم متطابقة في عمود مفتاح. ولكن ، كالعادة ، هناك "لكن". تعمل قواعد التنسيق الشرطي على مستوى الخلية بينما قد ترغب في تمييز النص المكرر بدلاً من الخلايا بأكملها. لا يمكن القيام بذلك إلا مع وحدات الماكرو. حتى إذا لم تكن لديك أي خبرة مع VBA ، فالرجاء عدم التسرع في إغلاق هذه الصفحة. ستجد هنا أمثلة التعليمات البرمجية الجاهزة للاستخدام والإرشادات التفصيلية حول كيفية استخدامها في أوراق العمل الخاصة بك.
قم بتمييز الكلمات المكررة في خلية تتجاهل حالة النص
يوضح هذا المثال كيفية تظليل الكلمات المكررة أو السلاسل النصية داخل خلية بلون الخط الأحمر كما هو موضح في الصورة أدناه. يرجى ملاحظة أنه يتم التعامل مع الأحرف الصغيرة والكبيرة على أنها نفس الأحرف. على سبيل المثال ، البرتقالي ، ORANGE و البرتقالي تعتبر نفس الكلمة.
رمز الماكرو هو كما يلي:
Public Sub HighlightDupesCaseInsensitive () خلية باهتة كمحدد خافت للنطاق كمحدد سلسلة = InputBox ("أدخل المحدد الذي يفصل القيم في خلية" ، "محدد" ، "،") لكل خلية فيApplication.Selection Call HighlightDupeWordsInCell (خلية ، محدد ، خطأ) نهاية تالية فرعية فرعية SublightDupeWordsInCell (خلية كنطاق ، محدد اختياري كـ String = "" ، اختياري حالة الأحرف حساس مثل منطقي = صحيح) نص باهت على هيئة كلمات باهتة سلسلة () ككلمة خافتة في السلسلة As String Dim wordIndex، matchCount، positionInText As Integer If CaseSensitive ثم الكلمات = Split (Cell.Value، Delimiter) الكلمات الأخرى = Split (LCase (Cell.Value)، Delimiter) End If For wordIndex = LBound (Words) To UBound (Words) - كلمة واحدة = كلمات (wordIndex) matchCount = 0 لـ nextWordIndex = wordIndex + 1 To UBound (كلمات) إذا كانت الكلمة = كلمات (nextWordIndex) ثم matchCount = matchCount + 1 End إذا التالي nextWordIndex If matchCount & gt؛ 0 ثم text = "" بالنسبة للفهرس = LBound (الكلمات) إلى UBound (الكلمات) text = text & amp؛ الكلمات (الفهرس) إذا كانت (الكلمات (الفهرس) = كلمة) ثم الخلية ، الأحرف (لين (نص) - لين (كلمة) + 1 ، لين (كلمة)). Font.Color = vbRed End If text = text & amp؛ محدد النهاية التالية إذا كانت الكلمة التالية فهرس End Subقم بتمييز نص مكرر في خلية حساسة لحالة الأحرف
في معظم الحالات ، نميل إلى تجاهل حالة الأحرف عند العمل مع إدخالات النص في Excel. في ظل ظروف معينة ، ومع ذلك ، فإن الحالة النصية مهمة. على سبيل المثال ، إذا كنت تتعامل مع معرفات أو كلمات مرور أو سجلات أخرى من هذا النوع ، فإن السلاسل مثل 1-AA و 1-aa و 1-Aa ليست مكررة ويجب عدم تمييزها:
في هذه الحالة ،استخدم الإصدار التالي من التعليمات البرمجية:
Public Sub HighlightDupesCaseSensitive () خلية باهتة كمحدد خافت للنطاق As String Delimiter = InputBox ("أدخل المحدد الذي يفصل القيم في خلية" ، "Delimiter" ، "،") لكل الخلية في التطبيق.اختيار استدعاء تمييزDupeWordsInCell (خلية ، محدد ، صحيح) نهاية ثانوية مميزة SublightDupeWordsInCell (خلية كنطاق ، محدد اختياري على شكل سلسلة = "" ، اختياري لحالة الأحرف حساس مثل منطقي = صحيح) نص باهت على هيئة كلمات باهتة في السلسلة () كسلسلة باهتة الكلمة مثل سلسلة كلمة خافتة ، matchCount ، positionInText كعدد صحيح إذا كانت حساسة لحالة الأحرف ، ثم الكلمات = انقسام (Cell.Value ، محدد) الكلمات الأخرى = Split (LCase (Cell.Value) ، Delimiter) End If For wordIndex = LBound (الكلمات) إلى UBound ( الكلمات) - كلمة واحدة = الكلمات (wordIndex) matchCount = 0 لـ nextWordIndex = wordIndex + 1 To UBound (الكلمات) إذا كانت الكلمة = كلمات (nextWordIndex) ثم matchCount = matchCount + 1 End إذا التالي nextWordIndex If matchCount & gt؛ 0 ثم text = "" بالنسبة للفهرس = LBound (الكلمات) إلى UBound (الكلمات) text = text & amp؛ الكلمات (الفهرس) إذا كانت (الكلمات (الفهرس) = كلمة) ثم الخلية ، الأحرف (لين (نص) - لين (كلمة) + 1 ، لين (كلمة)). Font.Color = vbRed End If text = text & amp؛ محدد النهاية التالية إذا كان Next wordIndex End Subكيفية استخدام وحدات الماكرو لتمييز الكلمات المكررة في Excel
إذا كنت مبتدئًا في استخدام VBA ، فإن الإرشادات التالية خطوة بخطوة سترشدك بشكل مريح خلال . يجوز للمستخدمين ذوي الخبرةما عليك سوى اختيار رابط التنزيل وتخطي الباقي :)
أضف التعليمات البرمجية إلى المصنف الخاص بك
ابدأ بإدخال رمز الماكرو في مصنف Excel. وإليك الطريقة:
- افتح المصنف حيث تريد تمييز المغفلين.
- اضغط على Alt + F11 لفتح محرر Visual Basic.
- في الجزء الأيمن ، انقر بزر الماوس الأيمن فوق ThisWorkbook وحدد Insert & gt؛ Module من قائمة السياق.
- الصق الكود في نافذة Code.
- للاحتفاظ بالماكرو للاستخدام المستقبلي ، تأكد من حفظ المصنف كملف .xlsm ممكّن بماكرو.
بدلاً من ذلك ، يمكنك تنزيل نموذج المصنف الخاص بنا وتشغيل الماكرو من هناك. يحتوي نموذج المصنف على وحدات الماكرو التالية:
- HighlightDupesCaseInsensitive - ظلال مكررة داخل خلية تتجاهل حالة الأحرف.
- HighlightDupesCaseSensitive - تمييز يخدع في خلية مع مراعاة حالة الأحرف.
لمزيد من المعلومات ، يرجى الاطلاع على كيفية إدراج رمز VBA في Excel.
تشغيل الماكرو
مع الكود مضافًا إلى المصنف الخاص بك أو ملف العينة الذي تم تنزيله وفتحه ، قم بتشغيل الماكرو بهذه الطريقة:
- في ورقة العمل الخاصة بك ، حدد الخلايا التي تريد تمييز النص المكرر فيها. يمكن أن يكون هذا نطاقًا واحدًا أو عدة نطاقات غير متجاورة.
- اضغط على Alt + F8.
- حدد الماكرو الذي تريده وانقر على تشغيل .
- سيطلب منك الماكرو تحديد المحددالتي تفصل بين القيم في الخلايا المحددة. سيظهر محدد الإعداد المسبق (فاصلة ومسافة في حالتنا) في مربع الإدخال تلقائيًا. بناءً على احتياجاتك ، يمكنك ترك المحدد الافتراضي أو كتابة محدد آخر ، ثم النقر فوق "موافق".
بعد لحظة ، كل السلاسل المكررة في المحدد سيتم تظليل الخلايا باللون الأحمر (أو أي لون خط تم تعيينه في التعليمات البرمجية الخاصة بك).
نصيحة. لإزالة التكرارات بسرعة داخل الخلية ، يمكنك استخدام Remove Duplicate Substrings ، وهي إحدى أدوات توفير الوقت العديدة المضمنة في Ultimate Suite.
كيفية ضبط الكود لاحتياجاتك
باستخدام ملاحظات الاستخدام هذه والمعرفة الأساسية لـ VBA (أو اتباع التعليمات التالية عن كثب) ، يمكنك بسهولة تعديل الرموز وفقًا لاحتياجاتك.
ضع في نفس الوحدة
كما قد تلاحظ ، فإن كلا من وحدات الماكرو ( HighlightDupesCaseSensitive و HighlightDupesCaseInsensitive ) تستدعي الوظيفة HighlightDupeWordsInCell . الفرق بين وحدتي الماكرو أعلاه هو فقط في المعلمة الثالثة (CaseSensitive) التي تم تمريرها إلى الوظيفة المذكورة.
بالنسبة للبحث الحساس لحالة الأحرف ، يتم تعيينها على TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
للبحث غير الحساس لحالة الأحرف ، يتم تعيينه على FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
لكي تعمل وحدات الماكرو ، يجب وضع رمز الوظيفة HighlightDupeWordsInCell في نفس الوحدة مثلوحدات الماكرو.
المحدد
عند التشغيل ، سيطلب منك الماكرو تحديد المحدد الذي يفصل بين الكلمات / السلاسل في الخلايا المحددة. المحدد الافتراضي هو فاصلة ومسافة ("،") ويتم تعيينه مسبقًا في InputBox:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
في الكود الخاص بك ، لك مطلق الحرية في استخدام أي حرف (أحرف) أخرى كمحدد محدد مسبقًا.
اللون
افتراضيًا ، تقوم وظيفة HighlightDupeWordsInCell بتظليل التكرارات بلون الخط الأحمر. يتم تحديد اللون في هذا الخط:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
هنا ، vbRed هو نوع من ثابت لون VBA. لعرض المغفلين بلون مختلف ، يمكنك استبدال vbRed بثابت آخر مثل vbGreen ، vbYellow ، vbBlue ، إلخ. T يمكن العثور على قائمة ثوابت الألوان المدعومة هنا.
هذا كيفية تمييز الكلمات المكررة في خلايا Excel. أشكرك على القراءة وآمل أن أراك على مدونتنا الأسبوع المقبل!
التنزيلات المتاحة
أمثلة التعليمات البرمجية لإبراز التكرارات في خلية (ملف .xlsm)
Ultimate إصدار Suite يعمل بكامل طاقته لمدة 14 يومًا (ملف exe.)