Cách xóa văn bản hoặc số khỏi ô Excel

  • Chia Sẻ Cái Này
Michael Brown

Hướng dẫn này sẽ dạy bạn cách tách văn bản khỏi số trong Excel bằng cách sử dụng các công thức gốc và hàm tùy chỉnh. Bạn cũng sẽ tìm hiểu cách tách văn bản và số thành hai cột riêng biệt.

Hãy tưởng tượng điều này: bạn nhận được dữ liệu thô để phân tích và phát hiện ra rằng các số được trộn lẫn với văn bản trong một cột. Trong hầu hết các trường hợp, chắc chắn sẽ thuận tiện hơn nếu đặt chúng trong các cột riêng biệt để kiểm tra kỹ hơn.

Trong trường hợp bạn đang làm việc với dữ liệu đồng nhất, bạn có thể sử dụng các hàm LEFT, RIGHT và MID để trích xuất dữ liệu cùng một số ký tự từ cùng một vị trí. Nhưng đó là một kịch bản lý tưởng cho các thử nghiệm trong phòng thí nghiệm. Trong cuộc sống thực, rất có thể bạn sẽ xử lý dữ liệu không giống nhau trong đó các số xuất hiện trước văn bản, sau văn bản hoặc giữa các văn bản. Các ví dụ dưới đây cung cấp giải pháp chính xác cho trường hợp này.

    Cách xóa văn bản và giữ số trong ô Excel

    Giải pháp hoạt động trong Excel 365, Excel 2021 và Excel 2019

    Microsoft Excel 2019 đã giới thiệu một vài hàm mới không có sẵn trong các phiên bản trước và chúng tôi sẽ sử dụng một trong các hàm đó, đó là TEXTJOIN, để tách các ký tự văn bản khỏi một ô chứa số.

    Công thức chung là:

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

    Trong Excel 365 và 2021, cái này cũng sẽ hoạt động:

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

    Thoạt nhìn, các công thức có thể trông hơi đáng sợ, nhưng chúng hoạt động :)

    Ví dụ: để xóa văn bản khỏi các số trong A2, hãy nhập một trong các công thức bên dưới vào B2, sau đó sao chép nó xuống bao nhiêu ô tùy ý.

    Trong Excel 365 - 2019:

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

    Trong Excel 2019, nó phải được nhập dưới dạng công thức mảng bằng Ctrl + Shift + Enter . Trong Excel mảng động, nó hoạt động như một công thức bình thường được hoàn thành bằng phím Enter.

    Trong Excel 365 và 2021:

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

    Kết quả là tất cả các ký tự văn bản đều được được xóa khỏi một ô và các số được giữ nguyên:

    Cách thức hoạt động của công thức này:

    Để hiểu rõ hơn về logic, hãy bắt đầu tìm hiểu công thức từ bên trong:

    Bạn sử dụng ROW(INDIRECT("1:"&LEN(string))) hoặc SEQUENCE(LEN(string)) để tạo một dãy số tương ứng với tổng số của các ký tự trong chuỗi nguồn, sau đó cung cấp các số thứ tự đó cho hàm MID làm số bắt đầu. Trong B2, phần này của công thức có dạng như sau:

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

    Hàm MID trích xuất từng ký tự từ A2 bắt đầu bằng ký tự đầu tiên và trả về chúng dưới dạng một mảng:

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

    Mảng này được nhân với 1. Các giá trị số tồn tại mà không thay đổi, trong khi nhân một ký tự không phải số sẽ dẫn đến lỗi #VALUE! lỗi:

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

    Hàm IFERROR xử lýcác lỗi này và thay thế chúng bằng các chuỗi trống:

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

    Mảng cuối cùng này được cung cấp cho hàm TEXTJOIN, hàm này nối các giá trị không trống trong mảng ( ignore_empty đối số được đặt thành TRUE) bằng cách sử dụng một chuỗi trống ("") cho dấu phân cách:

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

    Mẹo. Đối với Excel 2016 - 2007, cũng có giải pháp nhưng công thức phức tạp hơn nhiều. Bạn có thể tìm thấy nó trong hướng dẫn này: Cách trích xuất số trong Excel.

    Chức năng tùy chỉnh để xóa văn bản khỏi số

    Giải pháp phù hợp với tất cả các phiên bản Excel

    Nếu bạn đang sử dụng phiên bản Excel cũ hơn hoặc tìm thấy các công thức trên khó nhớ, không có gì ngăn cản bạn tạo chức năng của riêng mình với cú pháp đơn giản hơn và tên thân thiện với người dùng, chẳng hạn như RemoveText . Hàm do người dùng định nghĩa (UDF) có thể được viết theo hai cách:

    Mã VBA 1:

    Ở đây, chúng ta lần lượt xem xét từng ký tự trong chuỗi nguồn one và kiểm tra xem nó có phải là số hay không. Nếu là số, ký tự sẽ được thêm vào chuỗi kết quả.

    Hàm RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) Sau đó sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Mã VBA 2:

    Mã tạo một đối tượng để xử lý một biểu thức chính quy. Sử dụng RegExp, chúng tôi xóa tất cả các ký tự không phải là các chữ số 0-9 khỏi chuỗi nguồn.

    Hàm RemoveText(str As String ) Dưới dạng Chuỗi Với CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    Trên các trang tính nhỏ, cả hai mã sẽ hoạt động tốt như nhau. Trên các trang tính lớn nơi hàm được gọi hàng trăm hoặc hàng nghìn lần, mã 2 sử dụng VBScript.RegExp sẽ hoạt động nhanh hơn.

    Bạn có thể tìm thấy các bước chi tiết để chèn mã vào sổ làm việc của mình tại đây: Cách chèn VBA mã trong Excel.

    Cho dù bạn chọn cách tiếp cận nào, từ góc độ người dùng cuối, chức năng xóa văn bản và để lại số cũng đơn giản như sau:

    RemoveText(string)

    Ví dụ: để xóa các ký tự không phải số khỏi ô A2, công thức trong ô B2 là:

    =RemoveText(A2)

    Chỉ cần sao chép nó xuống dưới cột và bạn sẽ nhận được kết quả này:

    Lưu ý. Cả công thức gốc và hàm tùy chỉnh đều xuất ra chuỗi số . Để biến nó thành một số, hãy nhân kết quả với 1 hoặc thêm số 0 hoặc đưa công thức vào hàm VALUE. Ví dụ:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Cách xóa số khỏi chuỗi văn bản trong Excel

    Giải pháp hoạt động trong Excel 365, Excel 2021 và Excel 2019

    Các công thức xóa số khỏi chuỗi chữ và số khá giống với các công thức được thảo luận trong ví dụ trước.

    Đối với Excel 365 - 2019:

    TEXTJOIN(" ", ĐÚNG, NẾU(ISERR(MID( ô , ROW(INDIRECT("1:"&LEN( ô ) )), 1) *1), MID( ô , ROW(INDIRECT("1:"&LEN( ô )))), 1), ""))

    Trong Excel 2019, hãy nhớ biến nó thành công thức mảng bằng cách nhấn đồng thời các phím Ctrl + Shift + Enter.

    Đối với Excel 365 và 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE(LEN( cell 1) *1), MID ( ô , SEQUENCE(LEN( ô )), 1), ""))

    Ví dụ: để tách các số khỏi một chuỗi trong A2, công thức là:

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

    Hoặc

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

    Kết quả là tất cả các số bị xóa khỏi một ô và các ký tự văn bản được giữ nguyên:

    Như minh họa trong ảnh chụp màn hình ở trên, công thức loại bỏ các ký tự số khỏi bất kỳ vị trí nào trong chuỗi: đầu, cuối và ở giữa. Tuy nhiên, có một lưu ý: nếu một chuỗi bắt đầu bằng một số theo sau là khoảng trắng , khoảng trắng đó được giữ lại, điều này tạo ra vấn đề về khoảng trắng ở đầu (như trong B2).

    Để loại bỏ dấu cách thừa trước văn bản , hãy ngắt công thức trong hàm TRIM như sau:

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

    Bây giờ, kết quả của bạn hoàn toàn hoàn hảo!

    Cách thức hoạt động của công thức này:

    Về bản chất, công thức hoạt động giống như được giải thích trong ví dụ trước. Sự khác biệt là, từ mảng cuối cùng được cung cấp cho hàm TEXTJOIN, bạn cần xóa số chứ không phải văn bản. Để hoàn thành việc này, chúng tôi sử dụng kết hợp các hàm IF và ISERROR.

    Như bạn còn nhớ,MID(…)+0 tạo ra một mảng số và lỗi #VALUE! lỗi đại diện cho các ký tự văn bản ở cùng một vị trí:

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

    Hàm ISERROR bắt lỗi và chuyển mảng giá trị Boolean kết quả tới IF:

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

    Khi hàm IF nhận thấy TRUE (lỗi), nó sẽ chèn ký tự văn bản tương ứng vào mảng được xử lý với sự trợ giúp của một hàm MID khác. Khi hàm IF nhìn thấy FALSE (một số), nó sẽ thay thế nó bằng một chuỗi trống:

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

    Mảng cuối cùng này được chuyển đến TEXTJOIN, do đó, nó sẽ nối các ký tự văn bản và xuất kết quả kết quả.

    Chức năng tùy chỉnh để xóa số khỏi văn bản

    Giải pháp hoạt động cho tất cả các phiên bản Excel

    Hãy nhớ rằng nên giữ một công thức mạnh mẽ đơn giản, tôi sẽ chia sẻ mã của hàm do người dùng định nghĩa (UDF) để loại bỏ bất kỳ ký tự số nào.

    Mã VBA 1:

    Hàm RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Hàm

    Mã VBA 2:

    Hàm RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Như trường hợp của hàm RemoveText, mã thứ hai tốt hơn nên được sử dụng trong lớnbảng tính để tối ưu hóa hiệu suất.

    Sau khi mã được thêm vào sổ làm việc của bạn, bạn có thể xóa tất cả các ký tự số khỏi một ô bằng chức năng tùy chỉnh này:

    RemoveNumbers(string)

    Trong trường hợp của chúng tôi, công thức trong B2 là:

    =RemoveNumbers(A2)

    Để cắt khoảng trắng ở đầu nếu có, hãy lồng hàm tùy chỉnh bên trong TRIM giống như cách bạn làm với công thức gốc:

    =TRIM(RemoveNumbers(A2))

    Tách số và văn bản thành các cột riêng biệt

    Trong trường hợp bạn muốn tách văn bản và số thành hai cột, sẽ rất tuyệt nếu bạn hoàn thành công việc bằng một công thức duy nhất , đồng ý? Đối với điều này, chúng ta chỉ cần hợp nhất mã của các hàm RemoveText RemoveNumbers thành một hàm, có tên là SplitTextNumbers hoặc đơn giản là Split hoặc bất cứ thứ gì bạn thích :)

    Mã VBA 1:

    Hàm SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Khác sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End Hàm

    Mã VBA 2:

    Hàm SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Với CreateObject ( "VBScript.RegExp" ).Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Khác.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Hàm tùy chỉnh mới của chúng tôi yêu cầu hai đối số:

    SplitTextNumbers(string, is_remove_text)

    Ở đâu is_remove_text là giá trị Boolean cho biết ký tự nào cần loại bỏ:

    • TRUE hoặc 1 - xóa văn bản và giữ lại số
    • FALSE hoặc 0 - loại bỏ số và giữ lại văn bản

    Đối với tập dữ liệu mẫu của chúng tôi, các công thức có dạng sau:

    Để xóa các ký tự không phải là số:

    =SplitTextNumbers(A2, TRUE)

    Để xóa các ký tự số :

    =SplitTextNumbers(A2, FALSE)

    Mẹo. Để tránh vấn đề có thể xảy ra về dấu cách ở đầu, tôi khuyên bạn nên luôn gói công thức xóa số trong hàm TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Công cụ đặc biệt để xóa số hoặc văn bản

    Dành cho những người làm như vậy không thích phức tạp hóa mọi thứ một cách không cần thiết, tôi sẽ trình bày cách riêng của chúng tôi để xóa văn bản hoặc số trong Excel.

    Giả sử Ultimate Suite của chúng tôi được thêm vào ruy-băng Excel của bạn, bạn sẽ làm như sau:

    1. Trên tab Ablebits Data , trong nhóm Văn bản , nhấp vào Xóa > Xóa ký tự .

  • Trên ngăn của phần bổ trợ, hãy chọn phạm vi nguồn, chọn tùy chọn Xóa bộ ký tự và chọn Văn bản ký tự hoặc Số ký tự trong danh sách thả xuống.
  • Nhấn Xóa và tận hưởng kết quả :)
  • Mẹo. Nếu kết quả chứa một số khoảng trắng ở đầu, Trim Spacescông cụ sẽ loại bỏ chúng ngay lập tức.

    Đó là cách xóa văn bản hoặc ký tự số khỏi chuỗi trong Excel. Tôi cảm ơn bạn đã đọc và mong được gặp bạn trên blog của chúng tôi vào tuần tới!

    Các bản tải xuống hiện có

    Xóa văn bản hoặc số trong Excel - ví dụ (tệp .xlsm)

    Ultimate Suite - phiên bản dùng thử (tệp .exe)

    Michael Brown là một người đam mê công nghệ chuyên dụng với niềm đam mê đơn giản hóa các quy trình phức tạp bằng các công cụ phần mềm. Với hơn một thập kỷ kinh nghiệm trong ngành công nghệ, anh ấy đã trau dồi kỹ năng của mình trong Microsoft Excel và Outlook, cũng như Google Trang tính và Tài liệu. Blog của Michael dành để chia sẻ kiến ​​thức và chuyên môn của anh ấy với những người khác, cung cấp các mẹo và hướng dẫn dễ thực hiện để cải thiện năng suất và hiệu quả. Cho dù bạn là một chuyên gia dày dạn kinh nghiệm hay người mới bắt đầu, blog của Michael đều cung cấp những hiểu biết có giá trị và lời khuyên thiết thực để tận dụng tối đa những công cụ phần mềm thiết yếu này.