ที่นี่ฟังก์ชัน 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 ความคิดเห็น:
แสดงความคิดเห็น