วิธีลบข้อความหรือตัวเลขออกจากเซลล์ Excel

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

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

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

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

    วิธีลบข้อความและเก็บตัวเลขในเซลล์ Excel

    วิธีแก้ปัญหาทำงานใน Excel 365, Excel 2021 และ Excel 2019

    Microsoft Excel 2019 ได้แนะนำฟังก์ชันใหม่บางอย่างที่ไม่มีในเวอร์ชันก่อนหน้า และเราจะใช้หนึ่งในฟังก์ชันดังกล่าว ซึ่งก็คือ TEXTJOIN เพื่อตัดอักขระข้อความออกจากเซลล์ มีตัวเลข

    สูตรทั่วไปคือ:

    TEXTJOIN("", TRUE, IFERROR(MID( cell, ROW(INDIRECT( "1:"&LEN( เซลล์))), 1) *1, ""))

    ใน Excel 365 และ 2021 อันนี้จะใช้ได้เช่นกัน:

    TEXTJOIN("", TRUE,IFERROR(MID( cell, SEQUENCE(LEN( cell)), 1) *1, ""))

    เมื่อแรกเห็น สูตรอาจดูน่ากลัวเล็กน้อย แต่ใช้งานได้ :)

    ตัวอย่างเช่น หากต้องการลบข้อความออกจากตัวเลขใน A2 ให้ป้อนสูตรใดสูตรหนึ่งด้านล่างใน B2 แล้วคัดลอกลงในเซลล์มากเท่าที่จำเป็น

    ใน Excel 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))

    ใน Excel 2019 จะต้องป้อนเป็นสูตรอาร์เรย์ด้วย Ctrl + Shift + Enter ในไดนามิกอาร์เรย์ Excel จะทำงานเหมือนสูตรปกติที่กรอกด้วยแป้น Enter

    ใน Excel 365 และ 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    ผลลัพธ์คือ อักขระข้อความทั้งหมด ลบออกจากเซลล์และเก็บตัวเลขไว้:

    สูตรนี้ทำงานอย่างไร:

    เพื่อให้เข้าใจตรรกะได้ดีขึ้น มาเริ่มตรวจสอบกัน สูตรจากภายใน:

    คุณใช้ ROW(INDIRECT("1:"&LEN(string))) หรือ SEQUENCE(LEN(string)) เพื่อสร้างลำดับของตัวเลขที่สอดคล้องกับจำนวนทั้งหมด ของอักขระในสตริงต้นทาง จากนั้นป้อนหมายเลขลำดับเหล่านั้นไปยังฟังก์ชัน MID เป็นตัวเลขเริ่มต้น ใน B2 สูตรส่วนนี้จะมีลักษณะดังนี้:

    MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)

    ฟังก์ชัน MID แยกอักขระแต่ละตัวจาก A2 โดยขึ้นต้นด้วยอักขระตัวแรกและส่งกลับเป็นอาร์เรย์:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    อาร์เรย์นี้คูณด้วย 1 ค่าตัวเลขจะคงอยู่โดยไม่มีการเปลี่ยนแปลง ขณะที่การคูณอักขระที่ไม่ใช่ตัวเลขจะส่งผลให้ #VALUE! ข้อผิดพลาด:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    ฟังก์ชัน IFERROR จัดการข้อผิดพลาดเหล่านี้และแทนที่ด้วยสตริงว่าง:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    อาร์เรย์สุดท้ายนี้ใช้กับฟังก์ชัน TEXTJOIN ซึ่งเชื่อมค่าที่ไม่ว่างในอาร์เรย์ ( ignore_empty อาร์กิวเมนต์ตั้งค่าเป็น TRUE) โดยใช้สตริงว่าง ("") สำหรับตัวคั่น:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    เคล็ดลับ สำหรับ Excel 2016 - 2007 มีวิธีแก้ปัญหาเช่นกัน แต่สูตรนั้นซับซ้อนกว่ามาก คุณสามารถค้นหาได้ในบทช่วยสอนนี้: วิธีแยกตัวเลขใน Excel

    ฟังก์ชันแบบกำหนดเองเพื่อลบข้อความออกจากตัวเลข

    โซลูชันนี้ใช้ได้กับ Excel ทุกรุ่น

    หากคุณใช้ Excel เวอร์ชันเก่าหรือค้นหาสูตรข้างต้นด้วย จำยาก ไม่มีอะไรขัดขวางไม่ให้คุณสร้างฟังก์ชันของคุณเองด้วยไวยากรณ์ที่ง่ายกว่าและชื่อที่ใช้งานง่าย เช่น RemoveText ฟังก์ชันที่ผู้ใช้กำหนด (UDF) สามารถเขียนได้สองวิธี:

    โค้ด VBA 1:

    ที่นี่ เราจะดูอักขระแต่ละตัวในสตริงต้นฉบับทีละตัว หนึ่งและตรวจสอบว่าเป็นตัวเลขหรือไม่ หากเป็นตัวเลข อักขระจะถูกเพิ่มลงในสตริงผลลัพธ์

    Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) จากนั้น sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    รหัส VBA 2:

    รหัสสร้างวัตถุเพื่อประมวลผลนิพจน์ทั่วไป การใช้ RegExp เราจะลบอักขระทั้งหมดที่ไม่ใช่ตัวเลข 0-9 ออกจากสตริงต้นฉบับ

    ฟังก์ชัน RemoveText(str As String ) เป็นสตริงด้วย CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) สิ้นสุดด้วย End Function

    ในเวิร์กชีตขนาดเล็ก โค้ดทั้งสองจะทำงานได้ดีพอๆ กัน บนเวิร์กชีตขนาดใหญ่ที่มีการเรียกใช้ฟังก์ชันเป็นร้อยหรือพันครั้ง โค้ด 2 ที่ใช้ VBScript.RegExp จะทำงานได้เร็วขึ้น

    ขั้นตอนโดยละเอียดในการแทรกโค้ดในสมุดงานของคุณสามารถพบได้ที่นี่: วิธีแทรก VBA โค้ดใน Excel

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

    RemoveText(string)

    ตัวอย่างเช่น ไปยัง ลบอักขระที่ไม่ใช่ตัวเลขออกจากเซลล์ A2 สูตรใน B2 คือ:

    =RemoveText(A2)

    เพียงคัดลอกลงในคอลัมน์ แล้วคุณจะได้ผลลัพธ์ดังนี้:

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

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    วิธีลบตัวเลขออกจากสตริงข้อความใน Excel

    โซลูชันนี้ใช้งานได้ใน Excel 365, Excel 2021 และ Excel 2019

    สูตรในการลบตัวเลขออกจากสตริงที่เป็นตัวอักษรและตัวเลขจะค่อนข้างคล้ายกับที่กล่าวถึงในตัวอย่างก่อนหน้านี้

    สำหรับ Excel 365 - 2019:

    TEXTJOIN(" ", TRUE, IF(ISERR(MID( เซลล์ , ROW(INDIRECT("1:"&LEN( เซลล์ ) )), 1) *1), MID( เซลล์ , ROW(INDIRECT("1:"&LEN( เซลล์ ))), 1), ""))

    ใน Excel 2019 อย่าลืมกำหนดให้เป็น สูตรอาร์เรย์ โดยกดแป้น Ctrl + Shift + Enter พร้อมกัน

    สำหรับ Excel 365 และ 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE(LEN( cell 1) *1), MID ( เซลล์ , SEQUENCE(LEN( เซลล์ )), 1), ""))

    ตัวอย่างเช่น หากต้องการตัดตัวเลขออกจากสตริงใน A2 สูตรคือ:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    หรือ

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))

    ด้วยเหตุนี้ ตัวเลขทั้งหมดจะถูกลบออกจากเซลล์และเก็บอักขระข้อความไว้:

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

    หากต้องการกำจัด ช่องว่างก่อนหน้าข้อความ ให้ใส่สูตรในฟังก์ชัน TRIM ดังนี้:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    ตอนนี้ ผลลัพธ์ของคุณสมบูรณ์แบบมาก!

    สูตรนี้ทำงานอย่างไร:

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

    อย่างที่คุณจำได้MID(...)+0 สร้างอาร์เรย์ของตัวเลขและ #VALUE! ข้อผิดพลาดที่แสดงอักขระข้อความในตำแหน่งเดียวกัน:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    ฟังก์ชัน ISERROR จับข้อผิดพลาดและส่งอาร์เรย์ที่เป็นผลลัพธ์ของค่าบูลีนไปยัง IF:

    {FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    เมื่อฟังก์ชัน IF พบ TRUE (ข้อผิดพลาด) จะแทรกอักขระข้อความที่สอดคล้องกันลงในอาร์เรย์ที่ประมวลผลด้วยความช่วยเหลือของฟังก์ชัน MID อื่น เมื่อฟังก์ชัน IF เห็น FALSE (ตัวเลข) จะแทนที่ด้วยสตริงว่าง:

    {"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

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

    ฟังก์ชันกำหนดเองเพื่อลบตัวเลขออกจากข้อความ

    โซลูชันนี้ใช้ได้กับ Excel ทุกรุ่น

    โปรดทราบว่าควรเก็บสูตรที่มีประสิทธิภาพไว้ ง่ายๆ ฉันจะแชร์โค้ดของฟังก์ชันที่ผู้ใช้กำหนด (UDF) เพื่อตัดอักขระที่เป็นตัวเลขออก

    โค้ด VBA 1:

    Function RemoveNumbers(str As String ) Dim sRes เป็นสตริง sRes = "" สำหรับ i = 1 ถึง Len(str) ถ้า False = IsNumeric(กลาง(str, i, 1)) จากนั้น sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    รหัส VBA 2:

    Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) สิ้นสุดด้วยฟังก์ชันสิ้นสุด

    เช่นเดียวกับกรณีของฟังก์ชัน RemoveText รหัสที่สองจะดีกว่าที่จะใช้ใน ใหญ่แผ่นงานเพื่อเพิ่มประสิทธิภาพการทำงาน

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

    RemoveNumbers(string)

    ในกรณีของเรา สูตรใน B2 คือ:

    =RemoveNumbers(A2)

    หากต้องการตัดช่องว่างนำหน้า หากมี ให้ซ้อนฟังก์ชันแบบกำหนดเองภายใน TRIM เช่นเดียวกับที่คุณทำกับสูตรเนทีฟ:

    =TRIM(RemoveNumbers(A2))

    แยกตัวเลขและข้อความออกเป็นคอลัมน์แยกกัน

    ในสถานการณ์ที่คุณต้องการแยกข้อความและตัวเลขออกเป็นสองคอลัมน์ จะเป็นการดีหากทำงานให้เสร็จด้วยสูตรเดียว , เห็นด้วย? สำหรับสิ่งนี้ เราเพียงแค่รวมโค้ดของฟังก์ชัน RemoveText และ RemoveNumbers เป็นฟังก์ชันเดียว โดยตั้งชื่อว่า SplitTextNumbers หรือเรียกง่ายๆ ว่า แยก หรือ สิ่งที่คุณต้องการ :)

    โค้ด VBA 1:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" สำหรับ i = 1 ถึง Len(str) sCurChar = Mid(str, i, 1) ถ้า True = IsNumeric(sCurChar) ดังนั้น sNum = sNum & sCurChar Else sText = ข้อความ & sCurChar End ถ้าถัดไป i ถ้า True = is_remove_text แล้วก็ SplitTextNumbers = sNum อื่น ๆ SplitTextNumbers = sText End ถ้า End Function

    VBA code 2:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String ด้วย CreateObject ( "VBScript.RegExp" ) .Global = True ถ้า True = is_remove_text แล้วก็ .Pattern = "[^0-9]" อื่นๆ.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    ฟังก์ชันแบบกำหนดเองใหม่ของเราต้องการสองอาร์กิวเมนต์:

    SplitTextNumbers(string, is_remove_text)

    Where is_remove_text เป็นค่าบูลีนที่ระบุอักขระที่จะตัดออก:

    • TRUE หรือ 1 - ลบข้อความและเก็บตัวเลข
    • FALSE หรือ 0 - ลบตัวเลขและเก็บข้อความ

    สำหรับชุดข้อมูลตัวอย่างของเรา สูตรจะใช้รูปแบบนี้:

    หากต้องการลบอักขระที่ไม่ใช่ตัวเลข:

    =SplitTextNumbers(A2, TRUE)

    หากต้องการลบอักขระที่เป็นตัวเลข :

    =SplitTextNumbers(A2, FALSE)

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

    =TRIM(SplitTextNumbers(A2, FALSE))

    เครื่องมือพิเศษเพื่อลบตัวเลขหรือข้อความ

    สำหรับผู้ที่ทำ ไม่ชอบอะไรที่ซับซ้อนโดยไม่จำเป็น ฉันจะแสดงวิธีการลบข้อความหรือตัวเลขใน Excel ในแบบของเราเอง

    สมมติว่า Ultimate Suite ของเราถูกเพิ่มลงใน Ribbon ของ Excel นี่คือสิ่งที่คุณทำ:

    1. บนแท็บ Ablebits Data ในกลุ่ม Text คลิก Remove > Remove Characters .

  • ในบานหน้าต่างของ Add-in ให้เลือกช่วงแหล่งที่มา เลือกตัวเลือก ลบชุดอักขระ และเลือก ข้อความ อักขระ หรือ ตัวเลข อักขระ ในรายการแบบเลื่อนลง
  • กด ลบ และเพลิดเพลินกับผลลัพธ์ :)
  • เคล็ดลับ หากผลลัพธ์มีช่องว่างนำหน้า การตัดแต่งช่องว่างเครื่องมือจะกำจัดพวกมันในเวลาไม่นาน

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

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

    ลบข้อความหรือตัวเลขใน Excel - ตัวอย่าง (ไฟล์ .xlsm)

    Ultimate Suite - เวอร์ชันทดลอง (ไฟล์ .exe)

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