Підрахунок слів у Excel VBA - Прості макроси Excel

Зміст

Нижче ми розглянемо програму в Excel VBA що підраховує кількість слів у вибраному діапазоні. Передбачається, що один або кілька пробілів розділяють слова.

Ситуація:

1. Спочатку ми оголошуємо два об’єкти Range і три змінні. Ми називаємо об'єкти діапазону rng і клітиною. Одну цілочисельну змінну, яку ми називаємо cellWords, одну цілочисельну змінну, яку ми називаємо totalWords, і одну змінну String, яку ми називаємо вмістом.

Dim rng As Range, клітинка As Range
Затемнити клітинні слова, загальні слова як ціле число, вміст як рядок

2. Ми ініціалізуємо об'єкт Range rng із вибраним діапазоном та двома змінними типу Integer зі значенням 0.

Встановити rng = Вибір
cellWords = 0
totalWords = 0

3. Ми хочемо перевірити кожну клітинку в випадково вибраному діапазоні (цей діапазон може бути будь -якого розміру). У Excel VBA для цього можна використовувати цикл For Every Next. Додайте такі рядки коду:

Для кожної клітинки В rng
Наступна клітина

Примітка: тут rng і комірка вибираються випадковим чином, ви можете використовувати будь -які імена. Не забувайте посилатися на ці імена в решті коду.

4. Далі ми визначаємо для кожної клітинки цього діапазону, скільки слів вона містить. Щоб ігнорувати клітинку, що містить формулу, додайте наступний рядок коду між Для кожного та Далі (лише якщо клітинка. HasFormula неправдива, ми продовжуємо).

Якщо не клітинка.HasFormula Тоді
Закінчити Якщо

5. Спочатку записуємо вміст комірки до змінного вмісту. Далі видаляємо пробіли на початку та в кінці (якщо такі є). У Excel VBA для цього можна використовувати функцію Обрізати. Наприклад, "excel vba" буде перетворено на "excel vba". Додайте такі рядки коду до свого оператора If.

content = cell.Value
content = Обрізати (content)

Примітка: функція обрізання в Excel VBA не видаляє зайві пробіли між словами, але це нормально у цьому прикладі.

6. На цьому етапі клітинка все ще може бути порожньою. Якщо комірка порожня, ми призначаємо значення 0 змінній cellWords. Якщо ні, воно містить принаймні одне слово, і ми призначаємо значення 1 змінної cellWords. Додайте такі рядки коду до свого оператора If.

Якщо content = "" Тоді
cellWords = 0
Інакше
cellWords = 1
Закінчити Якщо

Звичайно, клітинка може містити більше одного слова. Це саме те, що ми хочемо зараз дізнатися. Як приклад беремо: "excel vba". Якщо клітинка містить хоча б один пробіл на цьому етапі, вона містить принаймні ще одне слово. Ви можете використовувати функцію Instr в Excel VBA для пошуку пробілу. Instr (зміст, "") знаходить позицію першого простору у вмісті.

7. Ми будемо використовувати структуру Do While Loop. Код, розміщений між цими словами (на кроках 8, 9 та 10), повторюватиметься доти, доки частина після «До» є істинною. Ми хочемо повторювати ці кроки, доки Instr (content, "")> 0 є істинним (якщо вміст містить пробіл і, отже, більше слів). Додайте цикл Do While до оператора If.

Do While InStr (content, "")> 0
Петля

8. Далі ми беремо частину вмісту, починаючи з позиції першого пробілу. Для цього ми використовуємо функцію Mid.

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

Наприклад: Mid ("excel vba", InStr ("excel vba", "")) дасть "vba".

9. Знову обрізаємо струну.

content = Обрізати (content)

Результат: "vba"

10. Збільшуємо клітинні слова на 1.

cellWords = cellWords + 1

Цей цикл "До поки" буде повторюватися до тих пір, поки вміст містить пробіл і, отже, більше слів. У нашому прикладі ми виходимо з циклу Do While, оскільки "vba" більше не містить пробілу! Результат: ця клітинка містить 2 слова.

11. Після перевірки однієї комірки ми додаємо cellWords до змінної totalWords. Цей рядок коду слід розмістити поза циклом Do While, але в операторі If.

totalWords = загальні слова + клітинні слова

Весь процес починається знову для наступної комірки, доки всі клітинки не будуть перевірені.

12. Нарешті, ми відображаємо значення totalWords за допомогою скриньки повідомлень. Цей рядок коду слід розмістити поза циклом For Every Next.

MsgBox totalWords & "слова, знайдені у вибраному діапазоні."

13. Перевірте програму.

Результат:

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave