Vba: วิธีแทนที่อักขระในสตริง


คุณสามารถใช้เมธอด แทนที่() ใน VBA เพื่อแทนที่อักขระในสตริงได้

วิธีนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

แทนที่(นิพจน์ ค้นหา แทนที่ เริ่ม นับ)

ทอง:

  • expression : สตริงที่คุณต้องการแทนที่อักขระ
  • find : สตริงที่จะค้นหา
  • แทนที่ : สตริงที่จะใช้แทน
  • start ( ทางเลือก ) : ตำแหน่งเริ่มต้นในสตริงที่จะค้นหา
  • count ( ทางเลือก ) : จำนวนการเปลี่ยนที่จะดำเนินการ

ตัวอย่างต่อไปนี้แสดงวิธีการใช้วิธีนี้ในทางปฏิบัติกับรายการสตริงต่อไปนี้ใน Excel:

ตัวอย่างที่ 1: ใช้ VBA เพื่อแทนที่อักขระทั้งหมดในสตริง (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)

สมมติว่าเราต้องการแทนที่ “this” ด้วย “THAT” ในแต่ละสตริง

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 Sub ReplaceChar()
Dim i As Integer

For i = 2 To 8
    Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ")
Next i
End Sub

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

คอลัมน์ B จะแสดงแต่ละสตริงในคอลัมน์ A โดยแต่ละรายการของ “this” จะถูกแทนที่ด้วย “THAT”

โปรดทราบว่าการเปลี่ยนนี้จะ คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

นั่นคือแต่ละเหตุการณ์ของ “สิ่งนี้” จะถูกแทนที่ แต่แต่ละเหตุการณ์ของ “สิ่งนี้” จะถูกทิ้งไว้ตามลำพัง

ตัวอย่างที่ 2: ใช้ VBA เพื่อแทนที่อักขระทั้งหมดในสตริง (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)

สมมติว่าเราต้องการแทนที่ “this” (โดยไม่คำนึงถึงกรณี) ด้วย “THAT” ในแต่ละสตริง

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 Sub ReplaceChar()
Dim i As Integer

For i = 2 To 8
    Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ")
Next i
End Sub

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

คอลัมน์ B จะแสดงแต่ละสตริงในคอลัมน์ A โดยแต่ละรายการของ “this” จะถูกแทนที่ด้วย “THAT”

โปรดทราบว่าการเปลี่ยนนี้ ไม่คำนึงถึงขนาดตัวพิมพ์

นั่นคือ ทุกเหตุการณ์ของ “สิ่งนี้” (ไม่ว่าจะใช้ตัวพิมพ์ใหญ่หรือไม่ก็ตาม) จะถูกแทนที่

เราสามารถทำการแทนที่โดยไม่คำนึงถึงขนาดตัวพิมพ์ได้โดยใช้วิธี LCase เพื่อแปลงแต่ละสตริงในคอลัมน์ A เป็นตัวพิมพ์เล็กก่อน ก่อนที่จะค้นหา “this” ในแต่ละสตริง

ตัวอย่างที่ 3: ใช้ VBA เพื่อแทนที่ N รายการแรกของอักขระในสตริง

สมมติว่าเราต้องการแทนที่เฉพาะการเกิดขึ้นครั้งแรกของ “this” (โดยไม่คำนึงถึงกรณี) ด้วย “THAT” ในแต่ละสตริง

เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:

 Sub ReplaceChar()
Dim i As Integer

For i = 2 To 8
    Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1)
Next i
End Sub

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

คอลัมน์ B จะแสดงแต่ละสตริงในคอลัมน์ A โดยมีเพียง “this” ตัวแรกที่แทนที่ด้วย “THAT”

โปรดทราบว่าเราใช้ Count:=1 เพื่อแทนที่เฉพาะสตริงที่ระบุครั้งแรก แต่คุณสามารถแทนที่ 1 ด้วยค่าใดก็ได้ที่คุณต้องการแทนที่ n รายการแรกของสตริงที่ระบุ

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับวิธี การแทนที่ VBA ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ โดยใช้ VBA:

VBA: วิธีนับจำนวนอักขระในสตริง
VBA: วิธีตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่
VBA: วิธีนับเซลล์ด้วยข้อความเฉพาะ

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *