/ / นับคำใน Excel VBA

นับคำใน Excel VBA

ด้านล่างเราจะดูที่โปรแกรมมา Excel VBA ที่ นับจำนวนคำ ในช่วงที่เลือก หนึ่งหรือหลายช่องว่างจะสันนิษฐานให้แยกคำ

สถานการณ์:

นับคำใน Excel VBA

1 ขั้นแรกเราจะประกาศสองวัตถุ Range และตัวแปรสามตัว เราเรียกวัตถุช่วง rng และเซลล์ ตัวแปรจำนวนเต็มหนึ่งที่เราเรียกว่า cellWords หนึ่งตัวแปรล้วนที่เราเรียก totalWords และตัวแปร String หนึ่งที่เราเรียกว่า content

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

2. เราเริ่มต้นวัตถุช่วง rng กับช่วงที่เลือกและตัวแปรสองตัวของ Type Integer ที่มีค่า 0

Set rng = Selection
cellWords = 0
totalWords = 0

3. เราต้องการตรวจสอบเซลล์แต่ละเซลล์ในช่วงที่เลือกแบบสุ่ม (ช่วงนี้สามารถมีขนาดใดก็ได้) ใน Excel VBA คุณสามารถใช้สำหรับแต่ละรอบถัดไปสำหรับนี้ เพิ่มบรรทัดรหัสต่อไปนี้:

For Each cell In rng

Next cell

หมายเหตุ: rng และ cell ถูกเลือกแบบสุ่มที่นี่คุณสามารถใช้ชื่อใดก็ได้ โปรดอย่าลืมดูชื่อเหล่านี้ในส่วนที่เหลือของรหัสของคุณ

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 ให้กับเซลล์ตัวแปร เพิ่มบรรทัดรหัสต่อไปนี้ในคำสั่ง If ของคุณ

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

เซลล์สามารถบรรจุคำได้มากกว่าหนึ่งคำ นั่นคือสิ่งที่เราต้องการหาตอนนี้ตัวอย่างเช่นเราใช้เวลา: "excel vba" ถ้าเซลล์มีพื้นที่อย่างน้อยหนึ่งแห่งในขั้นตอนนี้จะมีคำอื่นอย่างน้อยหนึ่งคำคุณสามารถใช้ฟังก์ชัน Instr ใน Excel VBA เพื่อค้นหาช่องว่าง Instr (เนื้อหา "") จะค้นหาตำแหน่งของช่องว่างแรกในเนื้อหา

7 เราจะใช้โครงสร้าง Do While Loop รหัสที่วางไว้ระหว่างคำเหล่านี้ (ในขั้นตอนที่ 8, 9 และ 10) จะถูกทำซ้ำตราบเท่าที่ส่วนหลัง Do While เป็นจริง เราต้องการทำซ้ำขั้นตอนเหล่านี้ตราบใดที่ Instr (content, ">)> 0 เป็นจริง (ตราบเท่าที่เนื้อหามีช่องว่างและมีคำมากขึ้น) เพิ่ม Do While Loop ในคำสั่ง If ของคุณ

Do While InStr(content, " ") > 0

Loop

8. จากนั้นเราจะเริ่มต้นเนื้อหาของเนื้อหาโดยเริ่มจากตำแหน่งของช่องว่างแรก เราใช้ฟังก์ชัน Mid สำหรับนี้

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" ไม่มีพื้นที่อีกต่อไป! ผลลัพธ์: เซลล์นี้มี 2 คำ

11. หลังจากตรวจสอบเซลล์หนึ่งเซลล์แล้วเราเพิ่ม cellWords ลงในตัวแปร totalWords บรรทัดรหัสนี้ควรวางไว้ข้างนอก Do While Loop แต่ในคำสั่ง if

totalWords = totalWords + cellWords

กระบวนการทั้งหมดจะเริ่มขึ้นอีกครั้งสำหรับเซลล์ถัดไปจนกว่าเซลล์ทั้งหมดจะได้รับการตรวจสอบ

12. สุดท้ายเราจะแสดงค่า TotalWords โดยใช้กล่องข้อความ บรรทัดรหัสนี้ควรวางไว้ข้างนอกลูป For Each Next

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

13. ทดสอบโปรแกรม

ผล:

ผลนับคำ

อ่านเพิ่มเติมได้ที่: