ספירת מילים ב- Excel VBA - פקודות מאקרו קלות של Excel

תוכן העניינים

להלן נבחן תוכנית ב Excel VBA זֶה סופר את מספר המילים בטווח נבחר. מניחים שמרווח אחד או יותר מפריד בין מילים.

מַצָב:

1. ראשית, אנו מכריזים על שני אובייקטים של טווח ושלושה משתנים. אנו קוראים לאובייקטים של טווח rng ותא. משתנה אחד שלם שאנו מכנים cellWords, משתנה שלם אחד שאנו מכנים totalWords, ומשתנה אחד של מחרוזת אנו קוראים לו תוכן.

Dim rng As Range, cell As Range
Dim cellWords, totalWords כמכלול שלם, תוכן כמחרוזת

2. אנו מאתחלים את אובייקט הטווח rng עם הטווח הנבחר ושני המשתנים מסוג מספר שלם עם ערך 0.

הגדר rng = בחירה
cellWords = 0
totalWords = 0

3. אנו רוצים לבדוק כל תא בטווח שנבחר באופן אקראי (טווח זה יכול להיות בכל גודל). ב- Excel VBA, תוכל להשתמש בלולאה 'לכל כל הבא' לשם כך. הוסף את שורות הקוד הבאות:

עבור כל תא ב rng
התא הבא

הערה: rng ותא נבחרים כאן באופן אקראי, אתה יכול להשתמש בכל שמות. זכור להתייחס לשמות אלה בשאר הקוד שלך.

4. לאחר מכן, אנו קובעים עבור כל תא בטווח זה כמה מילים הוא מכיל. כדי להתעלם מתא המכיל נוסחה, הוסף את שורת הקוד הבאה בין For Each and Next (רק אם cell.HasFormula שקר אנו ממשיכים).

אם לא תא. יש פורמולה אז
סוף אם

5. ראשית, אנו כותבים את תוכן התא לתוכן המשתנה. לאחר מכן, אנו מסירים את הרווחים בתחילת ובסוף (אם יש כאלה). ב- Excel VBA, תוכל להשתמש בפונקציית Trim לשם כך. לדוגמה, "excel vba" יומר ל- "excel vba". הוסף את שורות הקוד הבאות בהצהרת If שלך.

content = cell.Value
תוכן = חיתוך (תוכן)

הערה: פונקציית הקיצוץ ב- Excel VBA אינה מסירה רווחים נוספים בין מילים, אך זה בסדר בדוגמה זו.

6. בשלב זה, תא עדיין יכול להיות ריק. אם התא ריק, אנו מקצים את הערך 0 למשתנה cellWords. אם לא, היא מכילה לפחות מילה אחת ואנו מקצים את הערך 1 למשתנה cellWords. הוסף את שורות הקוד הבאות בהצהרת If שלך.

אם תוכן = "" אז
cellWords = 0
אַחֵר
cellWords = 1
סוף אם

תא יכול להכיל יותר ממילה אחת כמובן. זה בדיוק מה שאנחנו רוצים לברר עכשיו. כדוגמה אנו לוקחים: "excel vba". אם תא מכיל לפחות רווח אחד בשלב זה, הוא מכיל לפחות עוד מילה אחת. אתה יכול להשתמש בפונקציה Instr ב- VBA של Excel כדי לחפש מקום. Instr (תוכן, "") מוצא את המיקום של המרחב הראשון בתוכן.

7. נשתמש במבנה Do While Loop. הקוד הממוקם בין המילים הללו (בשלב 8, 9 ו -10) יחזור על עצמו כל עוד החלק שאחרי Do While נכון. אנו רוצים לחזור על שלבים אלה כל עוד Instr (תוכן, "")> 0 נכון (כל עוד התוכן מכיל רווח ובכך יותר מילים). הוסף את Do While Loop בהצהרת ה- If שלך.

בצע בעוד InStr (תוכן, "")> 0
לוּלָאָה

8. לאחר מכן, אנו לוקחים את חלק התוכן המתחיל במיקום החלל הראשון. אנו משתמשים בפונקציית האמצע לשם כך.

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

לדוגמה: Mid ("excel vba", InStr ("excel vba", "")) ייתן "vba".

9. אנו חותכים את המחרוזת שוב.

תוכן = חיתוך (תוכן)

תוצאה: "vba"

10. אנו מגדילים את cellWords ב -1.

cellWords = cellWords + 1

Loop Do While Loop הזה יחזור על עצמו כל עוד התוכן מכיל רווח ובכך יותר מילים. בדוגמה שלנו, אנו יוצאים מהלולאה Do While Loop מכיוון ש- "vba" אינו מכיל רווח יותר! תוצאה: תא זה מכיל 2 מילים.

11. לאחר שבדקנו תא אחד, נוסיף cellWords למשתנה totalWords. שורת קוד זו צריכה להיות ממוקמת מחוץ ללולאה Do While Loop אך בהצהרת If.

totalWords = totalWords + cellWords

כל התהליך מתחיל מחדש לתא הבא עד שכל התאים נבדקו.

12. לבסוף, אנו מציגים את הערך של totalWords באמצעות תיבת הודעה. שורת קוד זו צריכה להיות ממוקמת מחוץ ללולאה For Every Next.

MsgBox totalWords & "מילים שנמצאות בטווח הנבחר."

13. בדוק את התוכנית.

תוֹצָאָה:

תוכל לעזור בפיתוח האתר, שיתוף הדף עם החברים שלך

wave wave wave wave wave