Excel: ค้นหาและแทนที่ค่าหลายค่าพร้อมกัน

  • แบ่งปันสิ่งนี้
Michael Brown

ในบทช่วยสอนนี้ เราจะดูวิธีต่างๆ ในการค้นหาและแทนที่คำ สตริง หรืออักขระแต่ละตัวหลายตัว เพื่อให้คุณสามารถเลือกวิธีที่เหมาะกับความต้องการของคุณมากที่สุด

ผู้คนมักจะค้นหาใน Excel อย่างไร ส่วนใหญ่โดยใช้การค้นหา & คุณลักษณะการแทนที่ซึ่งใช้ได้ดีกับค่าเดียว แต่ถ้าคุณมีสินค้าหลายสิบหรือหลายร้อยรายการที่ต้องเปลี่ยนล่ะ แน่นอนว่าไม่มีใครอยากทำการแทนที่ทั้งหมดด้วยตนเองทีละรายการ แล้วทำใหม่ทั้งหมดเมื่อข้อมูลมีการเปลี่ยนแปลง โชคดีที่มีวิธีที่มีประสิทธิภาพมากกว่าสองสามวิธีในการแทนที่จำนวนมากใน Excel และเราจะตรวจสอบแต่ละวิธีโดยละเอียด

    ค้นหาและแทนที่ค่าหลายค่าด้วย SUBSTITUTE ที่ซ้อนกัน

    วิธีที่ง่ายที่สุดในการค้นหาและแทนที่หลายรายการใน Excel คือการใช้ฟังก์ชัน SUBSTITUTE

    ตรรกะของสูตรนั้นง่ายมาก: คุณเขียนฟังก์ชันแต่ละรายการเพื่อแทนที่ค่าเก่าด้วยค่าใหม่ . จากนั้น คุณซ้อนฟังก์ชันเหล่านั้นเข้าด้วยกัน เพื่อให้แต่ละ SUBSTITUTE ที่ตามมาใช้เอาต์พุตของ SUBSTITUTE ก่อนหน้าเพื่อค้นหาค่าถัดไป

    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( text, old_text1, new_text1), old_text2, new_text2), old_text3, new_text3)

    ในรายการตำแหน่งที่ตั้งใน A2:A10 สมมติว่าคุณต้องการแทนที่ชื่อประเทศแบบย่อ (เช่น FR , UK และ USA ) ด้วยแบบเต็มฟังก์ชัน MassReplace จะทำงานเฉพาะในสมุดงานที่คุณใส่รหัสเท่านั้น หากคุณไม่แน่ใจว่าจะทำอย่างไรให้ถูกต้อง โปรดทำตามขั้นตอนที่อธิบายไว้ใน วิธีแทรกโค้ด VBA ใน Excel

    เมื่อเพิ่มโค้ดลงในเวิร์กบุ๊กของคุณแล้ว ฟังก์ชันจะปรากฏในสูตรอัจฉริยะเท่านั้น ชื่อฟังก์ชัน ไม่ใช่อาร์กิวเมนต์! แม้ว่าฉันเชื่อว่าการจำไวยากรณ์ไม่ใช่เรื่องใหญ่:

    MassReplace(input_range, find_range, replace_range)

    Where:

    • Input_range - ช่วงต้นทางที่ คุณต้องการแทนที่ค่า
    • Find_range - อักขระ สตริง หรือคำที่ต้องการค้นหา
    • Replace_range - อักขระ สตริง หรือคำที่จะแทนที่ด้วย

    ใน Excel 365 เนื่องจากการสนับสนุนสำหรับอาร์เรย์แบบไดนามิก จึงทำงานเหมือนสูตรปกติ ซึ่งจำเป็นต้องป้อนเฉพาะในเซลล์บนสุด (B2):

    =MassReplace(A2:A10, D2:D4, E2:E4)

    ใน Excel พรีไดนามิก สิ่งนี้ทำงานเป็นสูตรอาร์เรย์ CSE แบบเก่า: คุณเลือกช่วงแหล่งที่มาทั้งหมด (B2:B10) พิมพ์ สูตร และกดแป้น Ctrl + Shift + Enter พร้อมกันเพื่อให้สมบูรณ์

    ข้อดี : เป็นทางเลือกที่ดีสำหรับฟังก์ชัน LAMBDA แบบกำหนดเองใน Excel 2019 , Excel 2016 และเวอร์ชันก่อนหน้า

    ข้อเสีย : ต้องบันทึกสมุดงานเป็นไฟล์ .xlsm ที่เปิดใช้งานแมโคร

    การแทนที่จำนวนมากใน Excel ด้วยแมโคร VBA

    ถ้าคุณรักรถยนต์ จับคู่งานทั่วไปกับมาโคร จากนั้นคุณสามารถใช้รหัส VBA ต่อไปนี้เพื่อค้นหาและแทนที่ค่าหลายค่าในช่วง

    Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error Resume Next Set SourceRng = Application.InputBox( "Source data: " , "Bulk Replace" , Application.Selection.Address, Type :=8) Err.Clear ถ้าไม่ใช่ SourceRng ไม่มีอะไร จากนั้นตั้งค่า ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear ถ้าไม่ใช่ ReplaceRng ไม่มีอะไร จากนั้น Application.ScreenUpdating = False สำหรับแต่ละ Rng ใน ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End Sub

    หากต้องการใช้มาโครทันที คุณสามารถดาวน์โหลดสมุดงานตัวอย่างของเราที่มีรหัส หรือคุณสามารถแทรกรหัสในสมุดงานของคุณเอง

    วิธีใช้มาโคร

    ก่อนเรียกใช้มาโคร ให้พิมพ์ค่าเก่าและค่าใหม่ลงในสองคอลัมน์ที่อยู่ติดกันตามที่แสดงในรูปภาพด้านล่าง ( C2:D4).

    จากนั้น เลือกแหล่งข้อมูลของคุณ กด Alt + F8 เลือกมาโคร BulkReplace แล้วคลิก เรียกใช้ .

    เนื่องจากเลือก แหล่งที่มา rage ไว้ล่วงหน้า เพียงตรวจสอบข้อมูลอ้างอิง แล้วคลิกตกลง:

    หลังจากนั้น เลือก แทนที่ช่วง และคลิกตกลง:

    เสร็จสิ้น!

    ข้อดี : ตั้งค่าครั้งเดียว ใช้ซ้ำได้ตลอดเวลา

    ข้อเสีย : ต้องเรียกใช้มาโครกับทุกข้อมูลเปลี่ยนแปลง

    ค้นหาและแทนที่หลายรายการใน Excel ด้วยเครื่องมือ Substring

    ในตัวอย่างแรก ฉันได้กล่าวว่า SUBSTITUTE ที่ซ้อนกันเป็นวิธีที่ง่ายที่สุดในการแทนที่ค่าหลายค่าใน Excel ฉันยอมรับว่าฉันผิด Ultimate Suite ของเราทำให้สิ่งต่าง ๆ ง่ายขึ้น!

    หากต้องการแทนที่จำนวนมากในเวิร์กชีตของคุณ ให้ไปที่แท็บ Ablebits Data แล้วคลิก Substring Tools > แทนที่สตริงย่อย .

    กล่องโต้ตอบ แทนที่สตริงย่อย จะปรากฏขึ้นเพื่อขอให้คุณกำหนดช่วง แหล่งที่มา และ สตริงย่อย ช่วง

    เมื่อเลือกช่วงสองช่วงแล้ว ให้คลิกปุ่ม แทนที่ และค้นหาผลลัพธ์ในคอลัมน์ใหม่ที่แทรกทางด้านขวา ของข้อมูลเดิม ใช่ มันง่ายมาก!

    เคล็ดลับ ก่อนคลิก แทนที่ มีสิ่งสำคัญอย่างหนึ่งที่คุณต้องพิจารณา นั่นคือช่อง คำนึงถึงขนาดตัวพิมพ์ อย่าลืมเลือกตัวเลือกนี้หากคุณต้องการจัดการตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นอักขระที่แตกต่างกัน ในตัวอย่างนี้ เราทำเครื่องหมายที่ตัวเลือกนี้เพราะเราต้องการแทนที่สตริงตัวพิมพ์ใหญ่เท่านั้น และปล่อยให้สตริงย่อยเช่น "fr", "uk" หรือ "ak" อยู่ในคำอื่นเช่นเดิม

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

    นั่นคือวิธีการค้นหาและแทนที่หลายคำและอักขระพร้อมกันใน Excel ฉันขอขอบคุณที่อ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!

    ดาวน์โหลดได้

    ค้นหาและแทนที่หลายรายการใน Excel (ไฟล์ .xlsm)

    Ultimate Suite 14 -day เวอร์ชันที่ทำงานได้อย่างสมบูรณ์ (ไฟล์ .exe)

    ชื่อ

    หากต้องการดำเนินการ ให้ป้อนค่าเก่าใน D2:D4 และค่าใหม่ใน E2:E4 ดังที่แสดงในภาพหน้าจอด้านล่าง จากนั้น ใส่สูตรด้านล่างใน B2 แล้วกด Enter:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)

    ...และคุณจะทำการแทนที่ทั้งหมดพร้อมกัน:

    โปรดทราบว่าวิธีการข้างต้นใช้ได้เฉพาะใน Excel 365 ที่สนับสนุนอาร์เรย์แบบไดนามิก

    ใน Excel 2019, Excel 2016 และรุ่นก่อนหน้าแบบไดนามิก สูตรจะต้องเป็น เขียนไว้สำหรับเซลล์บนสุด (B2) จากนั้นคัดลอกไปยังเซลล์ด้านล่าง:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)

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

    หมายเหตุ ฟังก์ชัน SUBSTITUTE เป็น คำนึงถึงตัวพิมพ์เล็กและใหญ่ หมายความว่าคุณควรพิมพ์ค่าเก่า ( old_text ) ด้วยตัวอักษรตัวพิมพ์ใหญ่และเล็กเหมือนกับที่ปรากฏในข้อมูลต้นฉบับ

    วิธีที่ง่ายที่สุดเท่าที่จะทำได้ วิธีนี้มีข้อเสียเปรียบอย่างมาก - เมื่อคุณมีรายการที่ต้องเปลี่ยนมากมาย ฟังก์ชันที่ซ้อนกันจะจัดการค่อนข้างยาก

    ข้อดี : ง่าย - ดำเนินการ; รองรับใน Excel ทุกรุ่น

    ข้อเสีย : ดีที่สุดสำหรับค่าค้นหา/แทนที่จำนวนจำกัด

    ค้นหาและแทนที่หลายรายการด้วย XLOOKUP

    ในสถานการณ์ที่คุณต้องการแทนที่ เนื้อหาเซลล์ทั้งหมด ไม่ใช่ส่วนหนึ่งของเซลล์ ฟังก์ชัน XLOOKUP มีประโยชน์

    มาสมมติว่าคุณมีรายชื่อประเทศในคอลัมน์ A และต้องการแทนที่ตัวย่อทั้งหมดด้วยชื่อเต็มที่เกี่ยวข้อง เช่นเดียวกับตัวอย่างก่อนหน้านี้ คุณเริ่มต้นด้วยการป้อนรายการ "ค้นหา" และ "แทนที่" ในคอลัมน์แยกกัน (D และ E ตามลำดับ) จากนั้นป้อนสูตรนี้ใน B2:

    =XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)

    แปลจากภาษา Excel เป็นภาษามนุษย์ นี่คือการทำงานของสูตร:

    ค้นหาค่า A2 (lookup_value) ใน D2:D4 (lookup_array) และส่งคืนค่าที่ตรงกันจาก E2:E4 (return_array) หากไม่พบ ให้ดึงค่าเดิมจาก A2

    ดับเบิลคลิกที่จุดจับเติมเพื่อให้สูตรคัดลอกไปยังเซลล์ด้านล่าง และผลลัพธ์จะไม่ทำให้คุณต้องรออีกต่อไป:

    เนื่องจากฟังก์ชัน XLOOKUP พร้อมใช้งานใน Excel 365 เท่านั้น สูตรข้างต้นจึงใช้ไม่ได้ในเวอร์ชันก่อนหน้า อย่างไรก็ตาม คุณสามารถเลียนแบบพฤติกรรมนี้ได้ง่ายๆ โดยใช้ IFERROR หรือ IFNA ร่วมกับ VLOOKUP:

    =IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)

    หมายเหตุ ฟังก์ชัน XLOOKUP และ VLOOKUP ไม่เหมือนกับ SUBSTITUTE ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ซึ่งหมายความว่าฟังก์ชันจะค้นหาค่าการค้นหาโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ตัวอย่างเช่น สูตรของเราจะแทนที่ทั้ง FR และ fr ด้วย ฝรั่งเศส

    ข้อดี : การใช้ฟังก์ชันปกติที่ผิดปกติ; ทำงานได้กับ Excel ทุกรุ่น

    ข้อเสีย : ใช้งานได้ในระดับเซลล์ ไม่สามารถแทนที่ส่วนหนึ่งของเนื้อหาเซลล์ได้

    แทนที่หลายรายการโดยใช้ฟังก์ชัน LAMBDA แบบเรียกซ้ำ

    สำหรับไมโครซอฟต์สมาชิก 365 คน Excel มีฟังก์ชันพิเศษที่อนุญาตให้สร้างฟังก์ชันแบบกำหนดเองโดยใช้ภาษาสูตรดั้งเดิม ใช่ ฉันกำลังพูดถึงแลมบ์ดา ข้อดีของวิธีนี้คือสามารถแปลงสูตรที่ยาวและซับซ้อนให้กลายเป็นสูตรที่กะทัดรัดและเรียบง่ายได้ ยิ่งไปกว่านั้น ยังให้คุณสร้างฟังก์ชันของคุณเองที่ไม่มีใน Excel ซึ่งเป็นสิ่งที่ก่อนหน้านี้ทำได้เฉพาะกับ VBA เท่านั้น

    สำหรับข้อมูลโดยละเอียดเกี่ยวกับการสร้างและการใช้ฟังก์ชัน LAMBDA แบบกำหนดเอง โปรดดูบทช่วยสอนนี้: วิธีการ เพื่อเขียนฟังก์ชัน LAMBDA ใน Excel ในที่นี้ เราจะพูดถึงตัวอย่างที่ใช้งานได้จริงสองสามตัวอย่าง

    ข้อดี : ผลลัพธ์ที่ได้คือฟังก์ชันที่สวยงามและใช้งานง่ายอย่างน่าอัศจรรย์ ไม่ว่าจะมีคู่เปลี่ยนกี่คู่ก็ตาม

    ข้อเสีย : มีเฉพาะใน Excel 365; เฉพาะสมุดงานและไม่สามารถนำมาใช้ซ้ำในสมุดงานต่างๆ

    ตัวอย่าง 1. ค้นหาและแทนที่คำ/สตริงหลายคำพร้อมกัน

    หากต้องการแทนที่หลายคำหรือข้อความในครั้งเดียว เราได้สร้างการกำหนดเอง ฟังก์ชัน LAMBDA ชื่อ MultiReplace ซึ่งสามารถอยู่ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้:

    =LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))

    หรือ

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))

    ทั้งสองเป็นแบบเรียกซ้ำ ฟังก์ชันที่เรียกตัวเองว่า ความแตกต่างอยู่ที่วิธีสร้างจุดออกเท่านั้น

    ในสูตรแรก ฟังก์ชัน IF จะตรวจสอบว่ารายการ เก่า ไม่ว่างเปล่า (เก่า"") ถ้าเป็น TRUE ฟังก์ชัน MultiReplace จะถูกเรียกใช้ หากเป็น FALSE ฟังก์ชันส่งคืน ข้อความ ในรูปแบบปัจจุบันและออก

    สูตรที่สองใช้ตรรกะย้อนกลับ: ถ้า old ว่างเปล่า (old="") ให้ส่งคืน ข้อความ และออก; หรือเรียก MultiReplace .

    ส่วนที่ยากที่สุดสำเร็จแล้ว! สิ่งที่คุณต้องทำคือตั้งชื่อฟังก์ชัน MultiReplace ใน Name Manager ดังที่แสดงในภาพหน้าจอด้านล่าง สำหรับคำแนะนำโดยละเอียด โปรดดูวิธีตั้งชื่อฟังก์ชัน LAMBDA

    เมื่อฟังก์ชันได้รับชื่อแล้ว คุณสามารถใช้งานได้เหมือนกับฟังก์ชันอื่นๆ ในตัว

    ไม่ว่าคุณจะเลือกรูปแบบสูตรใดในสองรูปแบบนี้ จากมุมมองของผู้ใช้ปลายทาง ไวยากรณ์มีความเรียบง่ายดังนี้:

    MultiReplace(ข้อความ เก่า ใหม่)

    ที่ไหน:

    • ข้อความ - แหล่งข้อมูล
    • เก่า - ค่าที่จะค้นหา
    • ใหม่ - ค่าที่จะแทนที่ด้วย

    นำตัวอย่างที่แล้วมาเพิ่มเติมอีกเล็กน้อย ไม่เพียงแต่แทนที่ตัวย่อของประเทศแต่รวมถึงตัวย่อของรัฐด้วย สำหรับสิ่งนี้ ให้พิมพ์ตัวย่อ (ค่า เก่า ) ในคอลัมน์ D ที่ขึ้นต้นด้วย D2 และชื่อเต็ม (ค่า ใหม่ ) ในคอลัมน์ E ที่ขึ้นต้นด้วย E2

    ใน B2 ป้อนฟังก์ชัน MultiReplace:

    =MultiReplace(A2:A10, D2, E2)

    กด Enter และเพลิดเพลินกับผลลัพธ์ :)

    วิธีการทำงานของสูตรนี้

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

    MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))

    เช่นเดียวกับฟังก์ชัน SUBSTITUTE ที่ซ้อนกัน ผลลัพธ์ของ SUBSTITUTE ก่อนหน้าจะกลายเป็นพารามิเตอร์ ข้อความ สำหรับ SUBSTITUTE ถัดไป กล่าวอีกนัยหนึ่ง ในการเรียกใช้ MultiReplace แต่ละครั้ง ฟังก์ชัน SUBSTITUTE จะประมวลผลไม่ใช่สตริงข้อความต้นฉบับ แต่เป็นเอาต์พุตของการเรียกก่อนหน้า

    เพื่อจัดการรายการทั้งหมดบน รายการเก่า เราเริ่มต้นด้วยเซลล์บนสุด และใช้ฟังก์ชัน OFFSET เพื่อเลื่อนลง 1 แถวด้วยการโต้ตอบแต่ละครั้ง:

    OFFSET(old, 1, 0)

    เช่นเดียวกันกับ ใหม่ รายการ:

    OFFSET(new, 1, 0)

    สิ่งสำคัญคือการระบุ จุดออก เพื่อป้องกันการเรียกซ้ำจากการดำเนินการตลอดไป ทำได้ด้วยความช่วยเหลือของฟังก์ชัน IF - ถ้าเซลล์ เก่า ว่างเปล่า ฟังก์ชันจะส่งกลับ ข้อความ กลับมาในรูปแบบปัจจุบันและออก:

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(…))) <3

    หรือ

    =LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))

    ตัวอย่างที่ 2. แทนที่อักขระหลายตัวใน Excel

    โดยหลักการแล้ว ฟังก์ชัน MultiReplace ที่กล่าวถึงในตัวอย่างก่อนหน้านี้สามารถ จัดการอักขระแต่ละตัวเช่นกัน โดยมีเงื่อนไขว่าอักขระเก่าและใหม่แต่ละตัวจะถูกป้อนในเซลล์แยกกัน เช่นเดียวกับชื่อย่อและชื่อเต็มในภาพหน้าจอด้านบน

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

    =LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))

    หรือ

    =LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))

    อย่าลืมตั้งชื่อฟังก์ชัน Lambda ใหม่ของคุณในตัวจัดการชื่อตามปกติ:

    และฟังก์ชันแบบกำหนดเองใหม่ของคุณพร้อมใช้งานแล้ว:

    ReplaceChars(text, old_chars, new_chars)

    ที่ไหน:

    • ข้อความ - สตริงต้นฉบับ
    • เก่า - อักขระที่ต้องการค้นหา
    • ใหม่ - อักขระที่จะแทนที่ด้วย

    หากต้องการทดสอบภาคสนาม มาทำบางสิ่งที่มักใช้กับข้อมูลที่นำเข้า - แทนที่เครื่องหมายอัญประกาศอัจฉริยะและเครื่องหมายอัญประกาศเดี่ยวอัจฉริยะด้วยอัญประกาศตรงและเครื่องหมายอัญประกาศเดี่ยวตรง

    ก่อนอื่น เราป้อนเครื่องหมายอัญประกาศอัจฉริยะและเครื่องหมายอัญประกาศเดี่ยวอัจฉริยะใน D2 อัญประกาศตรงและเครื่องหมายอัญประกาศเดี่ยวตรงใน E2 คั่นอักขระด้วยช่องว่างเพื่อให้อ่านง่ายขึ้น (เนื่องจากเราใช้ตัวคั่นเดียวกันในทั้งสองเซลล์ จึงไม่มีผลกระทบต่อผลลัพธ์ - Excel จะแทนที่ช่องว่างด้วยการเว้นวรรค)

    หลังจากนั้น เราป้อนสูตรนี้ใน B2:

    =ReplaceChars(A2:A4, D2, E2)

    และได้ผลลัพธ์ที่เราต้องการ:

    นอกจากนี้ยังสามารถพิมพ์อักขระโดยตรงในสูตรได้อีกด้วย ในกรณีของเรา อย่าลืม "ทำซ้ำ" คำพูดตรงๆ แบบนี้:

    =ReplaceChars(A2:A4, "“ ” ’", """ "" '")

    วิธีการทำงานของสูตรนี้

    The ReplaceChars ฟังก์ชันจะวนผ่านสตริง old_chars และ new_chars และทำการแทนที่ทีละตัวโดยเริ่มจากอักขระตัวแรกทางด้านซ้าย ส่วนนี้ดำเนินการโดยฟังก์ชัน SUBSTITUTE:

    SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))

    ในการวนซ้ำแต่ละครั้ง ฟังก์ชัน RIGHT จะตัดอักขระหนึ่งตัวออกจากด้านซ้ายของทั้ง old_chars และ new_chars สตริง เพื่อให้ LEFT สามารถดึงอักขระคู่ถัดไปเพื่อแทนที่:

    ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))

    ก่อนเรียกซ้ำแต่ละครั้ง ฟังก์ชัน IF จะประเมินสตริง old_chars . หากไม่ว่างเปล่า ฟังก์ชันจะเรียกใช้ตัวเอง ทันทีที่อักขระตัวสุดท้ายถูกแทนที่ กระบวนการวนซ้ำสิ้นสุดลง สูตรจะส่งกลับ ข้อความ ในรูปแบบปัจจุบันและออก

    หมายเหตุ เนื่องจากฟังก์ชัน SUBSTITUTE ที่ใช้ในสูตรหลักของเราคือ คำนึงถึงตัวพิมพ์เล็กและใหญ่ ดังนั้นทั้ง Lambdas ( MultiReplace และ ReplaceChars ) จึงถือว่าตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นอักขระที่แตกต่างกัน

    ค้นหาจำนวนมากและแทนที่ด้วย UDF

    ในกรณีที่ฟังก์ชัน LAMBDA ไม่พร้อมใช้งานใน Excel ของคุณ คุณสามารถเขียนฟังก์ชันที่ผู้ใช้กำหนดเองสำหรับการแทนที่หลายรายการด้วยวิธีดั้งเดิมโดยใช้ VBA

    เพื่อแยกความแตกต่างของ UDF จากฟังก์ชัน MultiReplace ที่กำหนดโดย LAMBDA เราจะตั้งชื่อให้แตกต่างกัน เช่น MassReplace โค้ดของฟังก์ชันมีดังนี้:

    Function MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () DimarRes() As Variant 'อาร์เรย์สำหรับจัดเก็บผลลัพธ์ Dim arSearchReplace(), sTmp As String ' Array ที่เก็บคู่การค้นหา/แทนที่, สตริงชั่วคราว Dim iFindCurRow, cntFindRows As Long ' ดัชนีของแถวปัจจุบันของอาร์เรย์ SearchReplace, นับ ของแถว Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long ' ดัชนีของแถวปัจจุบันในช่วงแหล่งที่มา ดัชนีของคอลัมน์ปัจจุบันในช่วงแหล่งที่มา จำนวนแถว จำนวนคอลัมน์ cntInputRows = InputRng.Rows.Count cntInputCols = InputRng .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 ถึง cntInputRows, 1 ถึง cntInputCols) ReDim arSearchReplace(1 ถึง cntFindRows, 1 ถึง 2) ' กำลังเตรียมอาร์เรย์ของคู่ค้นหา/แทนที่ สำหรับ iFindCurRow = 1 ถึง cntFindRows arSearchReplace( iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'ค้นหาและแทนที่ในช่วงแหล่งที่มา For iInputCurRow = 1 ถึง cntInputRows For iInputCurCol = 1 ถึง cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value ' การแทนที่คู่การค้นหา/แทนที่ทั้งหมดในแต่ละเซลล์ For iFindCurRow = 1 To cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 2)) Next arRes (iInputCurRow, iInputCurCol) = sTmp Next Next MassReplace = arRes End Function

    เช่นเดียวกับฟังก์ชันที่กำหนดโดย LAMBDA UDF คือ ทั้งสมุดงาน นั่นหมายถึง

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้