کلمات معمولاً با یک پردازشگر کلمه مانند مایکروسافت ورد مرتبط هستند. با این حال، بسیاری از افراد در برنامه صفحه گسترده خود با کلمات نیز کار می کنند. (یک بار یک همکار داشتم که همیشه از اکسل برای نوشتن یادداشت استفاده می کرد.) ممکن است مواقعی بخواهید تعداد کلمات یک کاربرگ را که از شخصی دریافت می کنید بشمارید. توانایی های بومی برای انجام چنین کاری در Word وجود دارد، اما در اکسل نه.
البته یک راه حل این است که ورک بوک خود را در Word بارگذاری کنید، تعداد کلمات را در آنجا انجام دهید و سپس فایل را ببندید. با این حال، این تقریباً به اندازه ایجاد یک ماکرو برای شمارش کلمات در خود اکسل انعطاف پذیر نیست. ماکرو زیر، CountWords، تعداد کلمات را در هر محدوده ای که در یک کاربرگ انتخاب می کنید، می شمارد:
Sub CountWords()
Dim lWords As Long
Dim Raw As String
Dim c As Range
lWords = 0
For Each c In Selection
If Not c.HasFormula Then
Get text in cell
Raw = c.Value
Get rid of extra spaces before, after, and within text
Raw = Application.Trim(Raw)
Get rid of any manual line breaks
and dont assume that they represent the start
of a new word
Raw = Replace(Raw, Chr(10), "")
Now count spaces in remaining text
lWords = lWords + Len(Raw) - Len(Replace(Raw, " ", ""))
Always increment word count if there is something in
the cell. If, however, there is nothing there, then
dont add a word.
If Len(Raw) > 0 Then lWords = lWords + 1
End If
Next c
MsgBox "There are " & lWords & " words in the selection."
End Sub
توجه داشته باشید که ماکرو از هر سلول در محدوده انتخابی شما عبور می کند. سپس هر سلولی که حاوی فرمول باشد را نادیده می گیرد. در تمام سلول های دیگر اساساً تعداد فضاهای سلول را می شمارد. (یک یا چند فاصله برای جدا کردن کلمات در نظر گرفته می شود.) همچنین توجه داشته باشید که به جای تابع VBA Trim از تابع برگه Trim استفاده می شود. دلیل آن این است که نسخه کاربرگ از فضاهای اضافی در وسط متن خلاص می شود، در حالی که تابع VBA فقط از فضاهای پیشرو یا انتهایی خلاص می شود. سپس تعداد کلمات در یک جعبه پیام برای اصلاح شما نمایش داده می شود.
ماکرو در محدوده های نسبتا کوچک بسیار سریع است. اگر محدوده بزرگی را انتخاب کنید (مانند کل کاربرگ)، در این صورت ماکرو می تواند زمان زیادی را صرف کند تا کار خود را به پایان برساند. هدف از این کار این است که مطمئن شوید قبل از فراخوانی ماکرو فقط محدوده واقعی را که می خواهید تجزیه و تحلیل کنید انتخاب کنید.