/ / Count Words in Excel VBA

عد الكلمات في Excel VBA

أدناه سننظر في برنامج في Excel VBA أن يحسب عدد الكلمات في نطاق محدد. يفترض فراغ واحد أو أكثر لفصل الكلمات.

موقف:

عد الكلمات في Excel VBA

1. أولاً ، نعلن عن اثنين من كائنات النطاق وثلاثة متغيرات. نحن نطلق على نطاق كائنات RNN والخلية. متغير واحد صحيح نطلق عليه cellWords ، متغير واحد صحيح نطلق عليه totalWords ، ومتغير سلسلة واحد نسميه المحتوى.

Dim rng As Range, cell As Range
Dim cellWords, totalWords As Integer, content As String

2. نقوم بتهيئة نطاق الكائن rng بالنطاق المحدد والمتغيرين من النوع Integer بالقيمة 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. نريد التحقق من كل خلية في نطاق محدد عشوائيًا (يمكن أن يكون هذا النطاق بأي حجم). في Excel VBA ، يمكنك استخدام حلقة For Each Next لهذا. قم بإضافة خطوط التعليمات البرمجية التالية:

For Each cell In rng

Next cell

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

4. بعد ذلك ، نحدد لكل خلية في هذا النطاق عدد الكلمات التي تحتوي عليها. لتجاهل خلية تحتوي على صيغة ، أضف سطر التعليمة البرمجية التالية بين For Each و Next (فقط إذا كان cell.HasFormula خطأ ، فستستمر).

If Not cell.HasFormula Then

End If

5. أولاً ، نكتب محتوى الخلية إلى المحتوى المتغير. بعد ذلك ، نزيل المسافات في البداية والنهاية (إذا كان هناك أي). في Excel VBA ، يمكنك استخدام الدالة Trim لهذا. على سبيل المثال ، سيتم تحويل "excel vba" إلى "excel vba". أضف الأسطر التعليمات البرمجية التالية في جملة If الخاص بك.

content = cell.Value
content = Trim(content)

ملاحظة: لا تعمل وظيفة القطع في Excel VBA على إزالة المسافات الزائدة بين الكلمات ، ولكن هذا "موافق" في هذا المثال.

6. في هذه المرحلة ، يمكن أن تظل الخلية فارغة. إذا كانت الخانة فارغة ، فإننا نعين القيمة 0 للمتغير cellWords. إذا لم يكن الأمر كذلك ، فإنه يحتوي على كلمة واحدة على الأقل ونعين القيمة 1 للمتغير cellWords. أضف الأسطر التعليمات البرمجية التالية في جملة If الخاص بك.

If content = "" Then
    cellWords = 0
Else
    cellWords = 1
End If

يمكن أن تحتوي الخلية على أكثر من كلمة واحدة بالطبع. هذا هو بالضبط ما نريد أن نعرفه الآن. كمثال نأخذ: "excel vba". إذا كانت الخلية تحتوي على مساحة واحدة على الأقل في هذه المرحلة ، فإنها تحتوي على كلمة واحدة على الأقل. يمكنك استخدام وظيفة Instr في Excel VBA للبحث عن مسافة ، ويجد Instr (content، "") موضع المساحة الأولى في المحتوى.

7. سنستخدم بنية Do While Loop. سيتم تكرار الكود الموصل بين هذه الكلمات (في الخطوة 8 و 9 و 10) طالما أن الجزء بعد Do While صحيح. نريد تكرار هذه الخطوات طالما أن Instr (المحتوى ، "")> 0 صحيح (طالما أن المحتوى يحتوي على مساحة وبالتالي كلمات أكثر). إضافة Do While Loop في بيان If الخاص بك.

Do While InStr(content, " ") > 0

Loop

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

content = Mid(content, InStr(content, " "))

على سبيل المثال: Mid ("excel vba" ، InStr ("excel vba"، "")) سيعطي "vba".

9. نحن تقليم السلسلة مرة أخرى.

content = Trim(content)

النتيجة: "vba"

10. نحن زيادة cellWords بنسبة 1.

cellWords = cellWords + 1

سوف يتكرر هذا Do While Loop طالماالمحتوى يحتوي على مساحة وبالتالي المزيد من الكلمات. في مثالنا ، نخرج من Do While Loop لأن "vba" لا يحتوي على مساحة بعد الآن! النتيجة: تحتوي هذه الخلية على كلمتين.

11. بعد فحص خلية واحدة ، نضيف cellWords إلى المتغير totalWords. يجب وضع سطر الرمز هذا خارج Do While Loop ولكن في عبارة If.

totalWords = totalWords + cellWords

تبدأ العملية بأكملها مرة أخرى للخلية التالية حتى يتم فحص جميع الخلايا.

12. وأخيرًا ، نعرض قيمة totalWords باستخدام msgbox. يجب وضع سطر الرمز هذا خارج حلقة For Next Next.

MsgBox totalWords & " words found in the selected range."

13. اختبار البرنامج.

نتيجة:

عد الكلمات الكلمات

اقرأ أيضًا: