ที่นี่ฟังก์ชัน VBA ที่อาจเป็นประโยชน์ในบางสถานการณ์ที่คล้ายกัน
ฟังก์ชั่น ExactWordInString ส่งกลับ True ถ้าคำที่ระบุอยู่ในสตริงข้อความ
คุณอาจจะคิดว่าฟังก์ชั่นนี้เป็นเพียงรูปแบบใน Excel ของฟังก์ชัน FIND หรือฟังก์ชัน Instr VBA ของ มีความแตกต่างที่ลึกซึ้งมาก ฟังก์ชั่น ExactWordInString จะมองหาคำที่สมบูรณ์ - ไม่ข้อความที่อาจเป็นส่วนหนึ่งของคำที่แตกต่างกัน
ตัวอย่างในรูปที่ประกอบควรชี้แจงว่าฟังก์ชันนี้จะทำงานได้ เซลล์ C2 มีสูตรนี้ซึ่งถูกคัดลอกไปยังเซลล์ที่อยู่ด้านล่าง:
= ExactWordInString (A2, B2)
ฟังก์ชั่นระบุคำที่สมบูรณ์ติดอยู่ แต่ไม่ได้กับดักคำซึ่งเป็นส่วนหนึ่งของการติดกับดัก นอกจากนี้ทราบว่าพื้นที่ไม่จำเป็นต้องใช้หลังคำเพื่อระบุว่ามันเป็นคำที่ ตัวอย่างเช่นคำที่สามารถตามด้วยเครื่องหมายวรรคตอน
ฟังก์ชั่นที่ระบุไว้ด้านล่างที่ถูกปรับเปลี่ยนอาร์กิวเมนต์แรก (Text) และแทนที่อักขระที่ไม่ใช่อัลฟาทั้งหมดที่มีอักขระช่องว่างจากนั้นจะเพิ่มพื้นที่ชั้นนำและตามรอยการขัดแย้งทั้งสอง ในที่สุดก็ใช้ฟังก์ชัน Instr เพื่อตรวจสอบว่าอาร์กิวเมนต์คำที่ถูกปรับเปลี่ยนเป็นปัจจุบันในการโต้เถียงข้อความที่ถูกปรับเปลี่ยน
เมื่อต้องการใช้ฟังก์ชันนี้ในสูตรเพียงคัดลอกและวางในโมดูล VBA ในสมุดงานของคุณ
Function ExactWordInString(Text As String, Word As String) As Boolean
' Returns TRUE if Word is contained in Text as an exact word match
Dim i As Long
Const Space As String = " "
Text = UCase(Text)
' Replace non-text characters with a space
For i = 0 To 64
Text = Replace(Text, Chr(i), Space)
Next i
For i = 91 To 255
Text = Replace(Text, Chr(i), Space)
Next i
' Add initial and final space to Text & Word
Text = Space & Text & Space
Word = UCase(Space & Word & Space)
ExactWordInString = InStr(Text, Word) <> 0
End Function
* อัพเดท *
Excel MVP ริค Rothstein ส่งฉันฟังก์ชั่นที่ง่ายมากที่ผลิตเดียวกันผล ในความเป็นจริงนั้นจะใช้เพียงหนึ่งคำสั่ง:
Function ExactWordInString(Text As String, Word As String) As Boolean
ExactWordInString = " " & UCase(Text) & " " Like "*[!AZ]" & UCase(Word) & "[!AZ]*"
End Function
0 ความคิดเห็น:
แสดงความคิดเห็น