VBA แทนที่สตริง | วิธีการแทนที่ข้อความในสตริงโดยใช้ VBA

Excel VBA แทนที่สตริง

แทนที่เป็นทั้งฟังก์ชันแผ่นงานและฟังก์ชัน VBA ฟังก์ชันนี้ช่วยให้เราแทนที่คำเฉพาะจากสตริงด้วยสตริงอื่น มันทำงานคล้ายกับฟังก์ชัน Substitute ใน VBA

ในขณะที่จัดการกับสตริงทดสอบหรือค่าข้อมูลข้อความเป็นสิ่งที่ชัดเจนในการแทนที่หรือแทนที่สิ่งอื่นด้วยการรวมข้อมูลสองเซลล์เข้าเป็นหนึ่งเดียวหรือแยกข้อมูลเซลล์หนึ่งไปยังหลาย ๆ สิ่ง สิ่งเหล่านี้เป็นงานทั่วไปที่เราทำในที่ทำงานทุกวัน

แล้วเราจะแทนที่คำหนึ่งในสตริงด้วยคำอื่นได้อย่างไร? ตัวอย่างเช่นหากสตริงคือ "อินเดียเป็นประเทศกำลังพัฒนาและอินเดียในประเทศเอเชีย" จากสตริงนี้เราต้องแทนที่คำว่า "อินเดีย" และเปลี่ยนเป็น "Bharath"

สามารถทำได้โดยใช้ฟังก์ชัน Replace ในบทความนี้เราจะแสดงวิธีการเปลี่ยนสตริงในการเข้ารหัส VBA

แทนที่ฟังก์ชัน

  • นิพจน์:นี่ไม่ใช่อะไรนอกจากค่าสตริงดั้งเดิมที่เราพยายามแทนที่บางสิ่งด้วยบางสิ่ง ตัวอย่างด้านล่างคือสตริงนิพจน์ -“ อินเดียเป็นประเทศกำลังพัฒนาและอินเดียในประเทศเอเชีย”
  • ค้นหาสตริง:สตริงที่เราพยายามจะแทนที่คืออะไร ตัวอย่างเช่นในสตริงนิพจน์เราพยายามแทนที่คำว่า“ อินเดีย”
  • แทนที่สตริง:สตริงทดแทนที่เราแทนที่สตริงค้นหาคืออะไร? ดังนั้นในกรณีนี้เราจึงพยายามแทนที่คำว่า“ อินเดีย” ด้วย“ Bharath”
  • [Start]:เป็นพารามิเตอร์ทางเลือก ในสตริงด้านบน (นิพจน์) เรามีคำว่า "อินเดีย" สองคำดังนั้นตำแหน่งของสตริงค้นหาที่เราต้องเริ่มต้นกระบวนการแทนที่ ตัวอย่างเช่นถ้าเราพูดว่า 2 มันจะเริ่มแทนที่คำว่า“ อินเดีย” ตั้งแต่ตำแหน่งที่สองเป็นต้นไป
  • [จำนวน]:หากสตริงการค้นหาปรากฏขึ้นหลายครั้งในนิพจน์แสดงว่าเราต้องแทนที่คำจำนวนเท่าใด

ตัวอย่างเช่นหากคำว่า“ อินเดีย” ปรากฏขึ้น 5 ครั้งและหากคุณระบุจำนวนเป็น 3 คำนั้นจะแทนที่คำ“ อินเดีย” 3 คำแรกเท่านั้น

วิธีการแทนที่ข้อความในสตริงโดยใช้ VBA

คุณสามารถดาวน์โหลดเทมเพลต Excel VBA Replace String ได้ที่นี่ - เทมเพลต VBA Replace String Excel

ตัวอย่าง # 1

ตอนนี้เราจะพยายามแทนที่คำว่า“ อินเดีย” ด้วย“ Bharath” จากค่าสตริงด้านล่าง

“ อินเดียเป็นประเทศกำลังพัฒนาและอินเดียอยู่ในกลุ่มประเทศเอเชีย”

ขั้นแรกเริ่มขั้นตอนแมโคร excel ทันที

รหัส:

 Sub Replace_Example () End Sub 

กำหนดตัวแปร VBA เป็น String

รหัส:

 Sub Replace_Example () Dim NewString เป็น String End Sub 

ในตัวแปรนี้เราจะแสดงค่าสตริงใหม่หลังจากแทนที่คำว่า“ อินเดีย” ด้วย“ Bharath” สำหรับตัวแปรนี้ให้เปิดฟังก์ชันแทนที่

อาร์กิวเมนต์แรกของฟังก์ชันนี้คือ "นิพจน์" ซึ่งเป็นสตริงที่เราพยายามแทนที่คำดังนั้นให้คัดลอกและวางสตริง "อินเดียเป็นประเทศกำลังพัฒนาและอินเดียในประเทศเอเชีย"

อาร์กิวเมนต์ต่อไปคือ "Find String" คือคำที่เราต้องการแทนที่เช่น "India"

อาร์กิวเมนต์ต่อไปคือ "Replace String" คือสตริงที่เราต้องการแทนที่คำว่า "India" เช่น "Bharath"

โอเค ณ ตอนนี้ละเว้นข้อโต้แย้งที่เหลืออยู่ ตอนนี้แสดงผลลัพธ์ในกล่องข้อความ

รหัส:

 Sub Replace_Example () Dim NewString As String NewString = Replace ("อินเดียเป็นประเทศกำลังพัฒนาและอินเดียเป็นประเทศในเอเชีย", "อินเดีย", "Bharath") MsgBox NewString End Sub 

ลองรันโค้ดโดยใช้ปุ่ม F5 หรือด้วยตนเองและดูผลลัพธ์สตริงใหม่

โอเคดูผลลัพธ์ข้างต้นทุกที่ที่เรามีคำว่า“ อินเดีย” มันถูกแทนที่ด้วยคำว่า“ Bharath”

ตัวอย่าง # 2

ตอนนี้เราจะดูวิธีใช้รหัสเดียวกันกับตัวแปร ดูรหัสด้านล่าง

รหัส:

 Sub Replace_Example1 () Dim NewString As String Dim MyString As String Dim FindString As String Dim ReplaceString As String MyString = "อินเดียเป็นประเทศกำลังพัฒนาและอินเดียเป็นประเทศในเอเชีย" FindString = "India" ReplaceString = "Bharath" NewString = Replace (MyString , FindString, ReplaceString) MsgBox NewString End Sub 

ในโค้ดด้านบนฉันได้ประกาศตัวแปรเพิ่มเติมสามตัว

 Dim MyString เป็น String Dim FindString As String Dim ReplaceString As String 

สำหรับตัวแปรเหล่านี้ฉันได้กำหนดค่าแทนที่จะจัดหาExpression String, Find String และ Replace Stringเราจะจัดหาตัวแปรให้กับฟังก์ชัน Replace เท่านั้น

รหัสนี้ยังให้ผลลัพธ์เหมือนกัน แต่ความแตกต่างเพียงอย่างเดียวคือเราใช้ตัวแปรแทนการจ่ายค่าโดยตรงให้กับฟังก์ชัน

ตัวอย่าง # 3

Assume you want to replace the word “India” only from the second position then we need to use the Replace function parameter [“Start”]. Look at the below code for your information.

Code:

 Sub Replace_Example2() Dim NewString As String Dim MyString As String Dim FindString As String Dim ReplaceString As String MyString = "India is a developing country and India is the Asian Country" FindString = "India" ReplaceString = "Bharath" NewString = Replace(MyString, FindString, ReplaceString, Start:=34) MsgBox NewString End Sub 

Only one extra thing we have added from the previous code is the “Start” parameter as 34. Now run the code and see the result.

Now we can see only string after the 34th character of the string with “India” replacing with “Bharath”.

Example #4

Now for an example, if we want to replace only the first occurrence of the word “India” to “Bharath” then we need to use [“Count”] parameter of the Replace function.

Below is the code for you.

Code:

 Sub Replace_Example3() Dim NewString As String Dim MyString As String Dim FindString As String Dim ReplaceString As String MyString = "India is a developing country and India is the Asian Country" FindString = "India" ReplaceString = "Bharath" NewString = Replace(MyString, FindString, ReplaceString, Count:=1) MsgBox NewString End Sub 

Run the code manually or through the F5 key and see the result.

As you can see above it has replaced only the first occurrence of the word “India” to “Bharath” and the second instance remains the same.

Things to Remember Here

  • Replace is a string function family in VBA.
  • In VBA, the replace function replaces all the supplied words with replaced string if the count parameter is not specified.
  • The start parameter will delete the number of characters supplied and show the remaining result.