ลบช่องว่างและบรรทัดว่างใน Excel โดยใช้ Regex

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

ต้องการจัดการช่องว่างด้วยวิธีที่มีประสิทธิภาพที่สุดหรือไม่ ใช้นิพจน์ทั่วไปเพื่อลบช่องว่างทั้งหมดในเซลล์ แทนที่ช่องว่างหลายช่องด้วยอักขระตัวเดียว ตัดช่องว่างระหว่างตัวเลขเท่านั้น และอื่นๆ อีกมากมาย

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

    เหตุใดจึงต้องใช้นิพจน์ทั่วไปเพื่อตัดช่องว่างใน Excel

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

    เพื่อทำความเข้าใจความแตกต่าง มาดูกันว่าอะไรที่ถือว่าเป็นการเว้นวรรคในแต่ละกรณี:

    • ฟังก์ชัน TRIM ในตัวสามารถดึง อักขระเว้นวรรคเท่านั้น ที่มีค่า 32 ในระบบ ASCII 7 บิต
    • นิพจน์ทั่วไปสามารถระบุรูปแบบต่างๆ ของช่องว่าง เช่น ช่องว่าง ( ) แท็บ (\t) การขึ้นบรรทัดใหม่ (\r) และใหม่ บรรทัด (\n) นอกจากนี้ยังมี อักขระช่องว่าง (\s) ที่ตรงกับประเภทเหล่านี้ทั้งหมด และมีประโยชน์อย่างยิ่งสำหรับการทำความสะอาดอินพุตดิบข้อมูล

    เมื่อรู้แน่ชัดว่าเกิดอะไรขึ้นเบื้องหลัง การแก้ปัญหาจึงง่ายกว่ามากใช่ไหม

    วิธีเปิดใช้ Regular Expression ใน Excel

    เป็นที่ทราบกันดีว่า Excel สำเร็จรูปไม่รองรับนิพจน์ทั่วไป คุณต้องสร้างฟังก์ชัน VBA แบบกำหนดเองเพื่อเปิดใช้งาน โชคดีที่เรามีอยู่แล้วชื่อ RegExpReplace เดี๋ยวก่อนทำไมต้อง "แทนที่" ในขณะที่เรากำลังพูดถึงการลบ ในภาษา Excel "remove" เป็นเพียงอีกคำหนึ่งสำหรับ "แทนที่ด้วยสตริงว่าง" :)

    หากต้องการเพิ่มฟังก์ชันลงใน Excel เพียงคัดลอกโค้ดจากหน้านี้ แล้ววางในโปรแกรมแก้ไข VBA และบันทึกไฟล์ของคุณเป็น สมุดงานที่เปิดใช้งานมาโคร (.xlsm)

    นี่คือไวยากรณ์ของฟังก์ชันสำหรับการอ้างอิงของคุณ:

    RegExpReplace(text, pattern, replacement, [instance_num] , [match_case])

    จำเป็นต้องมีอาร์กิวเมนต์สามตัวแรก สองอาร์กิวเมนต์สุดท้ายเป็นตัวเลือก

    ที่ไหน:

    • ข้อความ - สตริงต้นฉบับที่ ค้นหาใน
    • รูปแบบ - regex ที่จะค้นหา
    • การแทนที่ - ข้อความที่จะแทนที่ด้วย หากต้องการ ลบ ช่องว่าง คุณต้องตั้งค่าอาร์กิวเมนต์นี้เป็น:
      • empty string ("") เพื่อตัดช่องว่างทั้งหมด
      • เว้นวรรค อักขระ (" ") เพื่อแทนที่ช่องว่างหลายช่องด้วยอักขระเว้นวรรคตัวเดียว
    • Instance_num (ไม่บังคับ) - หมายเลขอินสแตนซ์ ในกรณีส่วนใหญ่ คุณจะละเว้นเพื่อแทนที่อินสแตนซ์ทั้งหมด(ค่าเริ่มต้น).
    • Match_case (ไม่บังคับ) - ค่าบูลีนที่ระบุว่าจะจับคู่ (TRUE) หรือละเว้น (FALSE) ตัวพิมพ์ข้อความ สำหรับช่องว่าง มันไม่เกี่ยวข้องและถูกละไว้

    สำหรับข้อมูลเพิ่มเติม โปรดดูที่ฟังก์ชัน RegExpReplace

    วิธีลบช่องว่างด้วย regex - ตัวอย่าง

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

    ลบช่องว่างทั้งหมดโดยใช้ regex

    หากต้องการลบช่องว่างทั้งหมดในสตริง คุณเพียงค้นหาอักขระช่องว่างใดๆ รวมถึง ช่องว่าง แท็บ การขึ้นบรรทัดใหม่ และการป้อนบรรทัด และแทนที่ด้วยสตริงว่าง ("")

    รูปแบบ : \s+

    การแทนที่ : ""

    สมมติว่าสตริงต้นฉบับอยู่ใน A5 สูตรใน B5 คือ:

    =RegExpReplace(A5, "\s+", "")

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

    =RegExpReplace(A5, $A$2, "")

    ลบช่องว่างมากกว่าหนึ่งช่อง

    หากต้องการลบ ช่องว่างพิเศษ (เช่น มากกว่า tha n ช่องว่างติดต่อกันหนึ่งช่อง) ใช้ regex \s+ เดียวกัน แต่แทนที่รายการที่ตรงกันที่พบด้วยอักขระเว้นวรรคตัวเดียว

    รูปแบบ : \s+

    การแทนที่ : " "

    =RegExpReplace(A5, "\s+", " ")

    โปรดทราบว่าสูตรนี้เก็บอักขระเว้นวรรคไว้ 1 ตัว ไม่เพียงระหว่างด้านล่างชุดข้อมูล สมมติว่าคุณต้องการตัดแต่งช่องว่างนำหน้า/ต่อท้ายทั้งหมด และเว้นช่องว่างระหว่างช่องว่างทั้งหมด โดยรักษาหลายบรรทัดไว้เหมือนเดิม เพื่อให้งานสำเร็จ คุณจะต้องมีฟังก์ชัน RegExpReplace ที่แตกต่างกันสองฟังก์ชัน

    ฟังก์ชันแรกจะแทนที่ช่องว่างหลายช่องด้วยอักขระเว้นวรรคตัวเดียว

    =RegExpReplace(A5, " +", " ")

    อีกฟังก์ชันหนึ่งจะตัดช่องว่างออก จากจุดเริ่มต้นและจุดสิ้นสุดของบรรทัด:

    =RegExpReplace(A5, "^ +| +$", "")

    เพียงนำสองฟังก์ชันมาซ้อนกัน:

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")

    และคุณจะได้ ผลลัพธ์ที่สมบูรณ์แบบ:

    Regex เพื่อแทนที่ช่องว่างหลายช่องด้วยอักขระตัวเดียว

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

    ก่อนอื่น ใช้ regex นี้เพื่อตัดช่องว่างนำหน้าและต่อท้าย:

    =RegExpReplace(A8, "^[\s]+|[\s]+$", "")

    จากนั้น ให้บริการฟังก์ชันด้านบน ไปยังอาร์กิวเมนต์ text ของ RegExpReplace อื่นที่แทนที่ช่องว่างที่ต่อเนื่องกันตั้งแต่หนึ่งช่องขึ้นไปด้วยอักขระที่คุณระบุ เช่น ยัติภังค์:

    รูปแบบ : \s+

    การแทนที่ : -

    สมมติว่าสตริงต้นฉบับอยู่ใน A8 สูตร ใช้รูปแบบนี้:

    =RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")

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

    Regex เพื่อลบบรรทัดว่าง

    นี่คือคำถามที่ผู้ใช้ที่มีหลายบรรทัดในเซลล์เดียวมักถาม: "มีบรรทัดว่างจำนวนมากในเซลล์ของฉัน มีวิธีใดที่จะรับนอกเหนือจากการผ่านแต่ละเซลล์และลบแต่ละบรรทัดด้วยตนเองหรือไม่" คำตอบ: ง่ายมาก!

    เพื่อจับคู่บรรทัดว่างที่ไม่มีอักขระตัวเดียวตั้งแต่เริ่มต้น ^ ของบรรทัดปัจจุบันจนถึง บรรทัดถัดไป \n regex คือ:

    รูปแบบ : ^\n

    หากบรรทัดว่างที่มองเห็นของคุณมีช่องว่างหรือแท็บ ให้ใช้นิพจน์ทั่วไปนี้:

    รูปแบบ : ^[\t ]*\n

    เพียงแทนที่ regex ด้วยสตริงว่างโดยใช้สูตรนี้ แล้วบรรทัดว่างทั้งหมดจะหายไปในคราวเดียว!

    =RegExpReplace(A5, $A$2, "")

    การลบช่องว่างด้วย RegEx Tools

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

    โชคดีที่เครื่องมือ RegEx ที่รวมอยู่ใน Ultimate Suite ของเรานั้นปราศจากข้อจำกัดเหล่านี้เนื่องจากประมวลผลโดยกลไก .NET RegEx ของ Microsoft ซึ่งช่วยให้คุณสร้างรูปแบบที่ซับซ้อนมากขึ้น ไม่รองรับโดย VBA RegExp Belo คุณจะพบตัวอย่างของนิพจน์ทั่วไปดังกล่าว

    Regex เพื่อลบช่องว่างระหว่างตัวเลข

    ในสตริงที่เป็นตัวอักษรและตัวเลข สมมติว่าคุณต้องการลบช่องว่างระหว่างตัวเลขเท่านั้น ดังนั้น สตริงเช่น "A 1 2 B" กลายเป็น "A 12 B"

    หากต้องการจับคู่ช่องว่างระหว่างตัวเลขสองหลักใดๆ คุณสามารถใช้การมองรอบๆ ต่อไปนี้:

    รูปแบบ : (?<=\d)\s+(?=\d)

    เพื่อสร้างสูตรตามใน regexes ด้านบน ต่อไปนี้เป็นขั้นตอนง่ายๆ สองขั้นตอนในการดำเนินการ:

    1. ในแท็บ Ablebits Data ในกลุ่ม Text คลิก Regex เครื่องมือ .

    2. ในบานหน้าต่าง Regex Tools เลือกแหล่งข้อมูล ป้อน regex ของคุณ เลือก ลบ ตัวเลือก และกด ลบ

      เพื่อให้ได้ผลลัพธ์เป็นสูตร ไม่ใช่ค่า อย่าลืมทำเครื่องหมายในช่อง แทรกเป็นสูตร

    3. <24

      ในอีกสักครู่ คุณจะเห็นฟังก์ชัน AblebitsRegexRemove แทรกอยู่ในคอลัมน์ใหม่ทางด้านขวาของข้อมูลเดิม

      หรืออีกทางหนึ่ง คุณสามารถป้อน regex ในบางเซลล์ พูด A5 และแทรกสูตรโดยตรงในเซลล์โดยใช้กล่องโต้ตอบ แทรกฟังก์ชัน โดยที่ AblebitsRegexRemove ถูกจัดหมวดหมู่ภายใต้ AblebitsUDFs .

      เนื่องจากฟังก์ชันนี้ออกแบบมาเป็นพิเศษสำหรับการลบสตริง จึงต้องการเพียงสองอาร์กิวเมนต์ - สตริงอินพุตและ regex:

      =AblebitsRegexRemove(A5, $A$2)

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

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

      ลบช่องว่างด้วย regex - ตัวอย่าง (ไฟล์ .xlsm)

      Ultimate Suite - รุ่นทดลอง (ไฟล์ .exe)

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

      =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")

      Regex เป็น ลบช่องว่างนำหน้าและต่อท้าย

      หากต้องการค้นหาช่องว่างที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัด ให้ใช้จุดยึด $ เริ่มต้นและสิ้นสุด

      นำหน้า ช่องว่าง:<3

      รูปแบบ : ^[\s]+

      ต่อท้าย ช่องว่าง:

      รูปแบบ : [\s ]+$

      นำหน้า และ ต่อท้าย ช่องว่าง:

      รูปแบบ : ^[\s]+

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