Excel VBA'da Kelimeleri Say - Kolay Excel Makroları

İçindekiler

Aşağıda bir programa bakacağız Excel VBA'sı o kelime sayısını sayar seçilen bir aralıkta. Bir veya daha fazla boşluğun sözcükleri ayırdığı varsayılır.

Durum:

1. İlk olarak, iki Range nesnesi ve üç değişken tanımlıyoruz. Range nesnelerini rng ve hücre olarak adlandırırız. CellWords adını verdiğimiz bir Tamsayı değişkeni, totalWords adını verdiğimiz bir Tamsayı değişkeni ve içerik adını verdiğimiz bir String değişkeni.

Aralık Olarak Karart, Aralık Olarak Hücre
Dim cellWords, totalWords As Integer, Content As String

2. Range nesnesini seçilen aralıkla ve Tamsayı türündeki iki değişkenle 0 değeriyle başlatıyoruz.

Set rng = Seçim
hücreKelimeler = 0
toplamKelimeler = 0

3. Rastgele seçilmiş bir aralıktaki her hücreyi kontrol etmek istiyoruz (bu aralık herhangi bir boyutta olabilir). Excel VBA'da bunun için For Her Sonraki döngüsünü kullanabilirsiniz. Aşağıdaki kod satırlarını ekleyin:

Her hücre için rng'de
Sonraki hücre

Not: rng ve hücre burada rastgele seçilmiştir, herhangi bir isim kullanabilirsiniz. Kodunuzun geri kalanında bu adlara başvurmayı unutmayın.

4. Ardından, bu aralıktaki her hücre için kaç kelime içerdiğini belirleriz. Formül içeren bir hücreyi yok saymak için For Her ve Sonraki arasına aşağıdaki kod satırını ekleyin (yalnızca cell.HasFormula false ise devam ederiz).

Hücre Değilse.HasFormula Sonra
Bitir

5. İlk olarak hücrenin içeriğini değişken içeriğine yazıyoruz. Daha sonra başında ve sonunda (varsa) boşlukları kaldırıyoruz. Excel VBA'da bunun için Kırp işlevini kullanabilirsiniz. Örneğin, "excel vba", "excel vba"ya dönüştürülecektir. If ifadenize aşağıdaki kod satırlarını ekleyin.

içerik = hücre.Değer
içerik = Kırp(içerik)

Not: Excel VBA'daki kırpma işlevi, sözcükler arasındaki fazladan boşlukları kaldırmaz, ancak bu örnekte sorun yok.

6. Bu noktada bir hücre hala boş olabilir. Hücre boşsa, cellWords değişkenine 0 değerini atarız. Değilse, en az bir kelime içerir ve cellWords değişkenine 1 değerini atarız. If ifadenize aşağıdaki kod satırlarını ekleyin.

Eğer içerik = "" O zaman
hücreKelimeler = 0
Başka
hücreKelimeler = 1
Bitir

Bir hücre elbette birden fazla kelime içerebilir. Şimdi tam olarak öğrenmek istediğimiz şey bu. Örnek olarak "excel vba" alıyoruz. Bir hücre bu aşamada en az bir boşluk içeriyorsa, en az bir kelime daha içerir. Bir boşluk aramak için Excel VBA'daki Instr işlevini kullanabilirsiniz. Instr(content, " "), içerikteki ilk boşluğun konumunu bulur.

7. Do while Loop yapısından faydalanacağız. Bu kelimelerin arasına yerleştirilen kod (8, 9 ve 10. adımlarda) Do while'dan sonraki kısım doğru olduğu sürece tekrarlanacaktır. Instr(content, " ") > 0 doğru olduğu sürece (içerik bir boşluk ve dolayısıyla daha fazla kelime içerdiği sürece) bu adımları tekrarlamak istiyoruz. If ifadenize Do while Döngüsü ekleyin.

InStr(içerik, " ") > 0 iken Yap
Döngü

8. Ardından, ilk boşluğun konumundan başlayarak içeriğin kısmını alıyoruz. Bunun için Mid fonksiyonunu kullanıyoruz.

içerik = Orta(içerik, InStr(içerik, " "))

Örneğin: Mid("excel vba", InStr("excel vba", " ")) " vba" verecektir.

9. İpi tekrar kesiyoruz.

içerik = Kırp(içerik)

Sonuç: "vba"

10. cellWords'ü 1 artırıyoruz.

cellWords = cellWords + 1

Bu Do while Döngüsü, içerik bir boşluk ve dolayısıyla daha fazla kelime içerdiği sürece tekrarlanacaktır. Örneğimizde, "vba" artık boşluk içermediğinden Do While Döngüsünden çıkıyoruz! Sonuç: bu hücre 2 kelime içeriyor.

11. Bir hücreyi kontrol ettikten sonra, totalWords değişkenine cellWords ekliyoruz. Bu kod satırı Do While Döngüsünün dışına ancak If deyiminin içine yerleştirilmelidir.

toplamKelimeler = toplamKelimeler + hücreKelimeler

Tüm süreç, tüm hücreler kontrol edilene kadar bir sonraki hücre için yeniden başlar.

12. Son olarak, bir msgbox kullanarak totalWords'ün değerini görüntülüyoruz. Bu kod satırı, For Her Sonraki döngüsünün dışına yerleştirilmelidir.

MsgBox totalWords & " seçilen aralıkta kelimeler bulundu."

13. Programı test edin.

Sonuç:

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave