Mục lục
Bạn muốn xử lý khoảng trắng một cách hiệu quả nhất? Sử dụng cụm từ thông dụng để xóa tất cả khoảng trắng trong một ô, thay thế nhiều khoảng trắng bằng một ký tự, chỉ cắt bớt khoảng trắng giữa các số, v.v.
Cho dù bạn đang sử dụng dữ liệu đầu vào nào, bạn sẽ hầu như không gặp phải tập dữ liệu không có khoảng trắng. Trong hầu hết các trường hợp, khoảng trắng là tốt - bạn sử dụng nó để phân tách các phần thông tin khác nhau một cách trực quan để dễ nhận biết hơn. Tuy nhiên, trong một số trường hợp, điều này có thể trở nên tồi tệ - khoảng trắng thừa có thể làm rối công thức của bạn và làm cho trang tính của bạn gần như không thể quản lý được.
Tại sao lại sử dụng biểu thức chính quy để cắt bớt khoảng trắng trong Excel?
Trước khi chúng ta đi sâu vào vấn đề cốt lõi của việc sử dụng biểu thức chính quy để xóa khoảng trắng trong trang tính Excel, tôi muốn giải quyết câu hỏi xuất hiện trong đầu ngay từ đầu - tại sao chúng ta cần biểu thức chính quy khi Excel đã có TRIM chức năng?
Để hiểu sự khác biệt, hãy xem những gì được coi là khoảng trắng trong mỗi trường hợp:
- Hàm TRIM tích hợp chỉ có thể loại bỏ ký tự khoảng trắng có giá trị 32 trong hệ thống ASCII 7-bit.
- Biểu thức chính quy có thể xác định một vài dạng khoảng trắng khác nhau như khoảng trắng ( ), tab (\t), ký tự xuống dòng (\r) và ký tự mới dòng (\n). Ngoài ra, còn có ký tự khoảng trắng (\s) phù hợp với tất cả các loại này và cực kỳ hữu ích để làm sạch đầu vào thôdữ liệu.
Biết chính xác điều gì xảy ra đằng sau hậu trường, việc tìm ra giải pháp sẽ dễ dàng hơn rất nhiều phải không?
Cách bật biểu thức chính quy trong Excel
Một thực tế ai cũng biết là Excel không hỗ trợ các biểu thức chính quy. Để kích hoạt chúng, bạn cần tạo một chức năng VBA tùy chỉnh. May mắn thay, chúng tôi đã có một cái tên RegExpReplace . Đợi đã, tại sao lại "thay thế" trong khi chúng ta đang nói về việc loại bỏ? Trong ngôn ngữ Excel, "xóa" chỉ là một từ khác của "thay thế bằng một chuỗi trống" :)
Để thêm hàm vào Excel của bạn, chỉ cần sao chép mã của hàm từ trang này, dán mã vào trình soạn thảo VBA và lưu tệp của bạn dưới dạng sổ làm việc hỗ trợ macro (.xlsm).
Đây là cú pháp của hàm để bạn tham khảo:
RegExpReplace(văn bản, mẫu, thay thế, [instance_num] , [match_case])Ba đối số đầu tiên là bắt buộc, hai đối số cuối cùng là tùy chọn.
Trong đó:
- Văn bản - chuỗi gốc để tìm kiếm trong.
- Pattern - biểu thức chính quy cần tìm kiếm.
- Replacement - văn bản cần thay thế bằng. Để xóa khoảng trắng , bạn phải đặt đối số này thành:
- chuỗi trống ("") để cắt hoàn toàn tất cả khoảng trắng
- dấu cách ký tự (" ") để thay thế nhiều khoảng trắng bằng một ký tự khoảng trắng
- Instance_num (tùy chọn) - số phiên bản. Trong hầu hết các trường hợp, bạn sẽ bỏ qua nó để thay thế tất cả các trường hợp(mặc định).
- Match_case (tùy chọn) - một giá trị Boolean cho biết có khớp (TRUE) hay bỏ qua kiểu chữ thường (FALSE) hay không. Đối với khoảng trắng, nó không liên quan và do đó bị bỏ qua.
Để biết thêm thông tin, vui lòng xem hàm RegExpReplace.
Cách xóa khoảng trắng bằng biểu thức chính quy - ví dụ
Với hàm Đã thêm hàm RegExpReplace vào sổ làm việc của bạn, hãy giải quyết từng tình huống khác nhau.
Xóa tất cả khoảng trắng bằng regex
Để xóa tất cả khoảng trắng trong một chuỗi, bạn chỉ cần tìm kiếm bất kỳ ký tự khoảng trắng nào, bao gồm khoảng trắng, tab, xuống dòng và xuống dòng, đồng thời thay thế chúng bằng một chuỗi trống ("").
Mẫu : \s+
Thay thế : ""
Giả sử chuỗi nguồn nằm trong A5, công thức trong B5 là:
=RegExpReplace(A5, "\s+", "")
Để dễ dàng quản lý các mẫu của bạn , bạn có thể nhập biểu thức chính quy vào một ô được xác định trước và cung cấp nó cho công thức bằng cách sử dụng tham chiếu tuyệt đối như $A$2, vì vậy, địa chỉ ô sẽ không thay đổi khi sao chép công thức xuống cột.
=RegExpReplace(A5, $A$2, "")
Xóa nhiều khoảng trắng
Để xóa khoảng trắng thừa (tức là nhiều hơn n một dấu cách liên tiếp), hãy sử dụng cùng một biểu thức chính quy \s+ nhưng thay thế các kết quả khớp tìm thấy bằng một ký tự khoảng trắng.
Mẫu : \s+
Thay thế : " "
=RegExpReplace(A5, "\s+", " ")
Xin lưu ý rằng công thức này giữ một ký tự khoảng cách không chỉ giữabên dưới tập dữ liệu, giả sử bạn muốn cắt bỏ tất cả các khoảng trắng ở đầu/cuối và tất cả trừ một khoảng trắng ở giữa, giữ nguyên nhiều dòng. Để hoàn thành tác vụ, bạn sẽ cần hai hàm RegExpReplace khác nhau.
Hàm đầu tiên thay thế nhiều khoảng trắng bằng một ký tự khoảng trắng.
=RegExpReplace(A5, " +", " ")
Hàm còn lại loại bỏ khoảng trắng từ đầu và cuối dòng:
=RegExpReplace(A5, "^ +| +$", "")
Chỉ cần lồng hai hàm này vào một hàm khác:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
Và bạn sẽ nhận được một kết quả hoàn hảo:
Regex để thay thế nhiều khoảng trắng bằng một ký tự
Trong trường hợp bạn muốn xóa tất cả khoảng trắng khỏi một chuỗi và thay thế từng nhóm dấu cách liên tiếp với một ký tự cụ thể, đây là việc bạn cần làm:
Trước tiên, hãy sử dụng biểu thức chính quy này để cắt các khoảng trắng ở đầu và cuối:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
Sau đó, thực hiện chức năng trên đối số text của một RegExpReplace khác thay thế một hoặc nhiều khoảng trắng liên tiếp bằng ký tự bạn chỉ định, ví dụ: dấu gạch ngang:
Pattern : \s+
Replacement : -
Giả sử chuỗi nguồn ở dạng A8, công thức có hình dạng này:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
Hoặc bạn có thể nhập các mẫu và thay thế vào các ô riêng biệt như trong ảnh chụp màn hình:
Regex để xóa các dòng trống
Đây là câu hỏi mà người dùng có nhiều dòng trong một ô thường hỏi: "Có rất nhiều dòng trống trong các ô của tôi. Có cách nào để xóaloại bỏ chúng ngoài việc đi qua từng ô và xóa từng dòng theo cách thủ công?" Câu trả lời: Thật dễ dàng!
Để khớp các dòng trống không có một ký tự nào từ đầu ^ của dòng hiện tại cho đến cuối dòng tiếp theo \n, biểu thức chính quy là:
Pattern : ^\n
Nếu các dòng trống trực quan của bạn chứa dấu cách hoặc tab, hãy sử dụng biểu thức chính quy này:
Mẫu : ^[\t ]*\n
Chỉ cần thay thế biểu thức chính quy bằng một chuỗi trống bằng công thức này và tất cả các dòng trống sẽ biến mất ngay lập tức!
=RegExpReplace(A5, $A$2, "")
Xóa khoảng trắng bằng Công cụ RegEx
Các ví dụ trên chỉ chứng minh một phần nhỏ khả năng tuyệt vời do các biểu thức chính quy mang lại. Thật không may, không phải tất cả các tính năng của biểu thức chính quy cổ điển có sẵn trong VBA.
May mắn thay, Công cụ RegEx đi kèm với Ultimate Suite của chúng tôi không có những giới hạn này vì chúng được xử lý bởi công cụ .NET RegEx của Microsoft. Điều này cho phép bạn xây dựng các mẫu phức tạp hơn không được hỗ trợ bởi VBA RegExp. bạn sẽ tìm thấy một ví dụ về biểu thức chính quy như vậy.
Regex để xóa khoảng trắng giữa các số
Trong một chuỗi chữ và số, giả sử bạn chỉ muốn xóa khoảng trắng giữa các số, vì vậy một chuỗi chẳng hạn như "A 1 2 B" trở thành "A 12 B".
Để khớp khoảng trắng giữa hai chữ số bất kỳ, bạn có thể sử dụng các giao diện sau:
Mẫu : (?<=\d)\s+(?=\d)
Để tạo công thức dựa trêntrên các biểu thức chính quy ở trên, đây là hai bước đơn giản để thực hiện:
- Trên tab Dữ liệu Ablebits , trong nhóm Văn bản , hãy nhấp vào Regex Công cụ .
- Trên ngăn Công cụ Regex , chọn dữ liệu nguồn, nhập biểu thức chính quy của bạn, chọn Xóa và nhấn Xóa .
Để nhận kết quả dưới dạng công thức, không phải giá trị, hãy nhớ đánh dấu vào hộp kiểm Chèn dưới dạng công thức .
Trong giây lát, bạn sẽ thấy hàm AblebitsRegexRemove được chèn vào một cột mới ở bên phải dữ liệu gốc.
Ngoài ra, bạn có thể nhập biểu thức chính quy vào một số ô , chẳng hạn A5 và chèn công thức trực tiếp vào một ô bằng hộp thoại Chèn hàm , trong đó AblebitsRegexRemove được phân loại theo AblebitsUDFs .
Vì chức năng này được thiết kế đặc biệt để xóa chuỗi nên nó chỉ yêu cầu hai đối số - chuỗi đầu vào và biểu thức chính quy:
=AblebitsRegexRemove(A5, $A$2)
Đó là cách xóa khoảng trắng trong Excel sử dụng biểu thức chính quy. 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 có sẵn
Xóa khoảng trắng bằng biểu thức chính quy - ví dụ (tệp .xlsm)
Bộ cuối cùng - bản dùng thử (tệp .exe)
từ mà còn ở đầu và cuối chuỗi, điều này không tốt. Để loại bỏ khoảng trắng ở đầu và cuối, hãy lồng công thức trên vào một hàm RegExpReplace khác để loại bỏ khoảng trắng ở đầu và cuối: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex to xóa khoảng trắng ở đầu và ở cuối
Để tìm kiếm khoảng trắng ở đầu hoặc cuối dòng, hãy sử dụng ký tự neo $ bắt đầu và kết thúc.
Khoảng trắng ở đầu :
Mẫu : ^[\s]+
Khoảng trắng ở cuối :
Mẫu : [\s ]+$
Khoảng trắng đầu và dấu :
Mẫu : ^[\s]+