Xóa chữ trước, sau, giữa 2 ký tự trong Excel

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

Trong một số bài viết gần đây, chúng ta đã xem xét các cách khác nhau để xóa ký tự khỏi chuỗi trong Excel. Hôm nay, chúng ta sẽ tìm hiểu thêm một trường hợp sử dụng - cách xóa mọi thứ trước hoặc sau một ký tự cụ thể.

    Xóa văn bản trước, sau hoặc giữa 2 ký tự bằng Tìm & Thay thế

    Đối với thao tác dữ liệu trong nhiều ô, Tìm và Thay thế là công cụ phù hợp. Để xóa một phần của chuỗi trước hoặc sau một ký tự cụ thể, đây là các bước thực hiện:

    1. Chọn tất cả các ô mà bạn muốn xóa văn bản.
    2. Nhấn Ctrl + H để mở hộp thoại Tìm và thay thế .
    3. Trong hộp Tìm gì , nhập một trong các tổ hợp sau:
      • Để loại bỏ văn bản trước một ký tự đã cho , hãy nhập ký tự đứng trước dấu hoa thị (*char).
      • Để xóa văn bản sau một ký tự nhất định , hãy nhập ký tự theo sau dấu hoa thị (char *).
      • Để xóa một chuỗi con giữa hai ký tự , hãy nhập dấu hoa thị được bao quanh bởi 2 ký tự (char*char).
    4. Bỏ qua Thay thế bằng ô trống.
    5. Nhấp vào Thay thế tất cả .

    Ví dụ: để xóa mọi thứ sau dấu phẩy kể cả chính dấu phẩy, hãy đặt dấu phẩy và dấu hoa thị (,*) vào hộp Find what và bạn sẽ nhận được kết quả sau:

    Để xóa một chuỗi con trước dấu phẩy , hãy nhập dấu hoa thị, dấu phẩy,mọi thứ sau dấu phẩy đầu tiên trong A2, công thức trong B2 là:

    =RemoveText(A3, ", ", 1, TRUE)

    Để xóa mọi thứ trước dấu phẩy đầu tiên trong A2, công thức trong C2 là:

    =RemoveText(A3, ", ", 1, FALSE)

    Vì hàm tùy chỉnh của chúng tôi chấp nhận chuỗi cho dấu phân cách , nên chúng tôi đặt dấu phẩy và dấu cách (", ") trong đối số thứ 2 để tránh rắc rối khi cắt bớt khoảng trắng ở đầu sau đó.

    Chức năng tùy chỉnh của chúng tôi hoạt động rất tốt phải không? Nhưng nếu bạn nghĩ đó là giải pháp toàn diện, thì bạn vẫn chưa xem ví dụ tiếp theo :)

    Xóa mọi thứ trước, sau hoặc giữa các ký tự

    Để có nhiều tùy chọn hơn để xóa các ký tự riêng lẻ hoặc văn bản từ nhiều ô, theo đối sánh hoặc vị trí, hãy thêm Ultimate Suite của chúng tôi vào hộp công cụ Excel của bạn.

    Ở đây, chúng ta sẽ xem xét kỹ hơn tính năng Xóa theo Vị trí nằm trên Dữ liệu Ablebits tab > Nhóm văn bản > Xóa .

    Dưới đây, chúng tôi sẽ đề cập đến hai các tình huống phổ biến nhất.

    Xóa mọi thứ trước hoặc sau văn bản nhất định

    Giả sử tất cả các chuỗi nguồn của bạn chứa một số từ hoặc văn bản phổ biến và bạn muốn xóa mọi thứ trước hoặc sau văn bản đó. Để hoàn thành, hãy chọn dữ liệu nguồn của bạn, chạy công cụ Xóa theo vị trí và định cấu hình như minh họa bên dưới:

    1. Chọn Tất cả các ký tự trước văn bản hoặc Tất cả các ký tự sau văn bản và nhập văn bản chính (hoặc ký tự) vào hộp bên cạnhvào đó.
    2. Tùy thuộc vào việc chữ hoa và chữ thường nên được coi là các ký tự khác nhau hay giống nhau, hãy chọn hoặc bỏ chọn hộp Phân biệt chữ hoa chữ thường .
    3. Nhấn Xóa .

    Trong ví dụ này, chúng tôi đang xóa tất cả các ký tự đứng trước từ "lỗi" trong các ô A2:A8:

    Và nhận được chính xác kết quả mà chúng tôi đang tìm kiếm:

    Xóa văn bản giữa hai ký tự

    Trong trường hợp thông tin không liên quan nằm giữa 2 ký tự cụ thể, đây là cách thực hiện bạn có thể nhanh chóng xóa nó:

    1. Chọn Xóa tất cả các chuỗi con và nhập hai ký tự vào các ô bên dưới.
    2. Nếu các ký tự "giữa" cũng nên được xóa , hãy chọn hộp Bao gồm dấu phân cách .
    3. Nhấp vào Xóa .

    Như một ví dụ, chúng tôi xóa mọi thứ nằm giữa hai ký tự dấu ngã (~) và nhận được kết quả là các chuỗi được làm sạch hoàn hảo:

    Để thử các tính năng hữu ích khác có trong công cụ đa chức năng này công cụ, tôi khuyến khích bạn tải xuống một e phiên bản định giá ở cuối bài viết này. Cảm ơn bạn đã đọc và hy vọng sẽ 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 các ký tự đầu tiên hoặc cuối cùng - ví dụ (tệp .xlsm)

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

    và dấu cách (*, ) trong hộp Tìm gì.

    Xin lưu ý rằng chúng tôi không chỉ thay thế dấu phẩy mà còn thay thế cả dấu phẩy và dấu cách để tránh dẫn đầu khoảng trắng trong kết quả. Nếu dữ liệu của bạn được phân tách bằng dấu phẩy không có dấu cách, hãy sử dụng dấu hoa thị theo sau là dấu phẩy (*,).

    Để xóa văn bản giữa hai dấu phẩy , hãy sử dụng dấu hoa thị được bao quanh bởi dấu phẩy (,*,).

    Mẹo. Nếu bạn muốn tên và số điện thoại được phân tách bằng dấu phẩy, hãy nhập dấu phẩy (,) vào trường Thay thế bằng .

    Xóa một phần văn bản bằng Flash Fill

    Trong các phiên bản Excel hiện đại (2013 trở lên), có một cách dễ dàng hơn để xóa văn bản đứng trước hoặc sau một ký tự cụ thể - tính năng Flash Fill. Đây là cách nó hoạt động:

    1. Trong một ô bên cạnh ô đầu tiên chứa dữ liệu của bạn, hãy nhập kết quả dự kiến ​​và nhấn Enter .
    2. Bắt đầu nhập một giá trị thích hợp vào ô tiếp theo. Sau khi Excel cảm nhận được mẫu trong các giá trị bạn đang nhập, Excel sẽ hiển thị bản xem trước cho các ô còn lại theo cùng một mẫu.
    3. Nhấn phím Enter để chấp nhận đề xuất.

    Xong!

    Xóa văn bản bằng công thức

    Trong Microsoft Excel, nhiều thao tác dữ liệu được thực hiện bằng cách sử dụng các tính năng sẵn có cũng có thể được thực hiện bằng công thức. Không giống như các phương pháp trước đó, các công thức không thực hiện bất kỳ thay đổi nào đối với dữ liệu gốc và cho phép bạn kiểm soát nhiều hơnkết quả.

    Cách xóa mọi thứ sau một ký tự cụ thể

    Để xóa văn bản sau một ký tự cụ thể, công thức chung là:

    LEFT( cell , SEARCH (" char ", cell ) -1)

    Ở đây ta dùng hàm SEARCH để lấy vị trí của ký tự và truyền cho hàm LEFT, như vậy nó sẽ trích ra số ký tự tương ứng từ đầu chuỗi. Một ký tự được trừ khỏi số do TÌM KIẾM trả về để loại trừ dấu phân cách khỏi kết quả.

    Ví dụ: để xóa một phần của chuỗi sau dấu phẩy, bạn nhập công thức bên dưới vào B2 và kéo xuống qua B7 :

    =LEFT(A2, SEARCH(",", A2) -1)

    Cách xóa mọi thứ trước một ký tự cụ thể

    Để xóa một phần của chuỗi văn bản trước một ký tự nhất định, công thức chung là:

    RIGHT( cell , LEN( cell ) - SEARCH(" char ", cell ))

    Ở đây, chúng ta lại tính toán vị trí của ký tự đích với sự trợ giúp của SEARCH, trừ nó khỏi tổng độ dài chuỗi do LEN trả về và chuyển chênh lệch cho hàm RIGHT, để hàm này lấy nhiều ký tự đó từ cuối chuỗi chuỗi.

    Ví dụ: để xóa văn bản trước dấu phẩy, công thức là:

    =RIGHT(A2, LEN(A2) - SEARCH(",", A2))

    Trong trường hợp của chúng tôi, dấu phẩy được theo sau bởi một ký tự khoảng trắng. Để tránh các khoảng trắng ở đầu kết quả, chúng tôi bọc công thức cốt lõi trong hàm TRIM:

    =TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2)))

    Lưu ý:

    • Cả haitrong số các ví dụ trên giả sử rằng chỉ có một phiên bản của dấu phân cách trong chuỗi gốc. Nếu có nhiều lần xuất hiện, văn bản sẽ bị xóa trước/sau lần đầu tiên .
    • Hàm TÌM KIẾM không phân biệt chữ hoa chữ thường , nghĩa là nó không tạo ra sự khác biệt giữa chữ thường và chữ hoa. Nếu ký tự cụ thể của bạn là một chữ cái và bạn muốn phân biệt chữ hoa, chữ thường thì hãy sử dụng chức năng TÌM phân biệt chữ hoa chữ thường thay vì TÌM KIẾM.

    Cách xóa văn bản sau lần xuất hiện thứ N của một ký tự

    Trong trường hợp khi một chuỗi nguồn chứa nhiều phiên bản của dấu phân cách, bạn có thể cần xóa văn bản sau một phiên bản cụ thể. Đối với điều này, hãy sử dụng công thức sau:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "#" , n ))) -1)

    Trong đó n là ký tự xuất hiện sau đó để xóa văn bản.

    Logic bên trong của công thức này yêu cầu sử dụng một số ký tự không có ở bất kỳ đâu trong dữ liệu nguồn, ký hiệu băm (#) trong trường hợp của chúng tôi. Nếu ký tự này xuất hiện trong tập dữ liệu của bạn, thì hãy sử dụng ký tự khác thay vì "#".

    Ví dụ: để xóa mọi thứ sau dấu phẩy thứ 2 trong A2 (và chính dấu phẩy), công thức là:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

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

    Phần quan trọng của công thức là hàm FIND tính toán vị trí thứ ndấu phân cách (dấu phẩy trong trường hợp của chúng tôi). Dưới đây là cách thực hiện:

    Chúng tôi thay thế dấu phẩy thứ 2 trong A2 bằng ký hiệu băm (hoặc bất kỳ ký tự nào khác không tồn tại trong dữ liệu của bạn) với sự trợ giúp của SUBSTITUTE:

    SUBSTITUTE(A2, ",", "#", 2)

    Chuỗi kết quả đi đến đối số thứ 2 của FIND, vì vậy nó tìm thấy vị trí của "#" trong chuỗi đó:

    FIND("#", "Emma, Design# (102) 123-4568")

    FIND cho chúng ta biết rằng "#" là ký tự thứ 13 trong chuỗi. Để biết số ký tự đứng trước nó, chỉ cần trừ 1 và bạn sẽ nhận được kết quả là 12:

    FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1

    Số này đi trực tiếp đến đối số num_chars của LEFT yêu cầu nó lấy 12 ký tự đầu tiên từ A2:

    =LEFT(A2, 12)

    Vậy là xong!

    Cách xóa văn bản trước khi ký tự xuất hiện lần thứ N

    Công thức chung để loại bỏ một chuỗi con trước một ký tự nhất định là:

    RIGHT(SUBSTITUTE( cell , " char ", "#", n ), LEN( ô ) - TÌM("#", SUBSTITUTE( ô , " char ", "#", n )) -1)

    Ví dụ: để loại bỏ văn bản trước dấu phẩy thứ 2 trong A2, công thức là:

    =RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)

    Để loại bỏ khoảng trắng ở đầu, chúng ta lại sử dụng TRIM hoạt động như một trình bao bọc:

    =TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))

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

    Tóm lại, chúng ta tìm hiểu có bao nhiêu ký tự sau dấu phân cách thứ n và trích xuất một chuỗi con có độ dài tương ứng từ bên phải. Dưới đây là công thức chia nhỏ:

    Đầu tiên, chúng ta thay thế dấu phẩy thứ 2 trong A2 bằng một hàm bămký hiệu:

    SUBSTITUTE(A2, ",", "#", 2)

    Chuỗi kết quả chuyển đến đối số text của RIGHT:

    RIGHT("Emma, Design# (102) 123-4568", …

    Tiếp theo, chúng ta cần xác định có bao nhiêu ký tự để trích xuất từ ​​​​cuối chuỗi. Đối với điều này, chúng ta tìm vị trí của ký hiệu băm trong chuỗi trên (là 13):

    FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    Và trừ nó khỏi tổng độ dài chuỗi (bằng 28):

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))

    Sự khác biệt (15) chuyển sang đối số thứ hai của RIGHT hướng dẫn nó lấy 15 ký tự cuối cùng từ chuỗi trong đối số đầu tiên:

    RIGHT("Emma, Design# (102) 123-4568", 15)

    Đầu ra là một chuỗi con " (102) 123-4568", rất gần với kết quả mong muốn, ngoại trừ khoảng trắng ở đầu. Vì vậy, chúng tôi sử dụng hàm TRIM để loại bỏ nó.

    Cách xóa văn bản sau lần xuất hiện cuối cùng của một ký tự

    Trong trường hợp các giá trị của bạn được phân tách bằng một số lượng dấu phân cách thay đổi, bạn có thể muốn xóa mọi thứ sau phiên bản cuối cùng của dấu phân cách đó. Điều này có thể được thực hiện với công thức sau:

    LEFT( cell , FIND("#", SUBSTITUTE( cell , " char ", "# ", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ", "")))) -1)

    Giả sử cột A chứa nhiều thông tin khác nhau về nhân viên, nhưng giá trị sau dấu phẩy cuối cùng luôn là số điện thoại. Mục tiêu của bạn là xóa số điện thoại và giữ lại tất cả các chi tiết khác.

    Để đạt được mục tiêu, bạn có thể xóa văn bản sau dấu phẩy cuối cùng trong A2 bằng cách nàycông thức:

    =LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)

    Sao chép công thức xuống dưới cột và bạn sẽ nhận được kết quả sau:

    Làm thế nào công thức hoạt động:

    Ý chính của công thức là chúng ta xác định vị trí của dấu phân cách cuối cùng (dấu phẩy) trong chuỗi và kéo một chuỗi con từ trái lên đến dấu phân cách. Xác định vị trí của dấu phân cách là phần khó nhất và đây là cách chúng tôi xử lý:

    Đầu tiên, chúng tôi tìm hiểu xem có bao nhiêu dấu phẩy trong chuỗi gốc. Đối với điều này, chúng tôi thay thế từng dấu phẩy bằng không có gì ("") và cung cấp chuỗi kết quả cho hàm LEN:

    LEN(SUBSTITUTE(A2, ",",""))

    Đối với A2, kết quả là 35, là số lượng ký tự trong A2 không có dấu phẩy.

    Trừ tổng chiều dài chuỗi (38 ký tự) số trên:

    LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))

    … và bạn sẽ nhận được 3, là tổng số của dấu phẩy trong A2 (và cả số thứ tự của dấu phẩy cuối cùng).

    Tiếp theo, bạn sử dụng tổ hợp hàm TÌM và SUBSTITUTE vốn đã quen thuộc để lấy vị trí của dấu phẩy cuối cùng trong chuỗi. Số phiên bản (dấu phẩy thứ 3 trong trường hợp của chúng tôi) được cung cấp bởi công thức LEN SUBSTITUTE đã đề cập ở trên:

    FIND("#", SUBSTITUTE(A2, ",", "#", 3))

    Có vẻ như dấu phẩy thứ 3 là ký tự thứ 23 trong A2, nghĩa là chúng tôi cần để trích xuất 22 ký tự trước nó. Vì vậy, chúng tôi đặt công thức trên trừ 1 trong đối số num_chars của LEFT:

    LEFT(A2, 23-1)

    Cách xóa văn bản trước lần xuất hiện cuối cùng của một ký tự

    Để xóamọi thứ trước phiên bản cuối cùng của một ký tự cụ thể, công thức chung là:

    RIGHT( cell , LEN( cell ) - FIND("#", SUBSTITUTE( ô , " char ", "#", LEN( cell ) - LEN(SUBSTITUTE( cell , " char ", ""))))))

    Trong bảng mẫu của chúng tôi, để xóa văn bản trước dấu phẩy cuối cùng, công thức có dạng sau:

    =RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))

    Để hoàn thiện, chúng tôi lồng nó vào hàm TRIM để loại bỏ khoảng trắng ở đầu:

    =TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))

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

    Tóm lại, chúng ta lấy vị trí của dấu phẩy cuối cùng như đã giải thích trong ví dụ trước và trừ nó khỏi tổng độ dài của chuỗi:

    LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))

    Kết quả là, chúng ta nhận được số các ký tự sau dấu phẩy cuối cùng và chuyển nó tới hàm RIGHT, do đó, hàm này mang lại nhiều ký tự đó từ cuối chuỗi.

    Hàm tùy chỉnh để xóa văn bản ở hai bên ký tự

    Là bạn đã thấy trong các ví dụ trên, bạn có thể giải quyết hầu hết mọi trường hợp sử dụng bằng cách sử dụng f gốc của Excel. unctions trong các kết hợp khác nhau. Vấn đề là bạn cần nhớ một số công thức phức tạp. Hmm, nếu chúng ta viết chức năng của riêng mình để bao gồm tất cả các tình huống thì sao? Nghe có vẻ như một ý tưởng tốt. Vì vậy, hãy thêm mã VBA sau vào sổ làm việc của bạn (các bước chi tiết để chèn VBA trong Excel có tại đây):

    Hàm RemoveText(str As String , dấu phân cách As String , xuất hiện As Integer , is_after AsBoolean ) Dim delimiter_num, start_num, delimiter_len As Integer Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(dấu phân cách) For i = 1 Để xảy ra delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) If 0 < delimiter_num Then start_num = delimiter_num + delimiter_len End If Next i If 0 < delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If RemoveText = str_result End Hàm

    Hàm của chúng ta được đặt tên RemoveText và nó có cú pháp sau:

    RemoveText(chuỗi, dấu phân cách, lần xuất hiện, is_after)

    Trong đó:

    Chuỗi - là chuỗi văn bản gốc. Có thể được biểu thị bằng tham chiếu ô.

    Dấu phân cách - ký tự trước/sau ký tự để xóa văn bản.

    Lần xuất hiện - phiên bản của dấu phân cách.

    Is_after - một giá trị Boolean cho biết bên nào của dấu phân cách cần xóa văn bản. Có thể là một ký tự đơn hoặc một chuỗi ký tự.

    • TRUE - xóa mọi thứ sau dấu phân cách (bao gồm cả chính dấu phân cách).
    • SAI - xóa mọi thứ trước dấu phân cách (bao gồm cả chính dấu phân cách).

    Sau khi mã của hàm được chèn vào sổ làm việc của bạn, bạn có thể xóa các chuỗi con khỏi các ô bằng các công thức nhỏ gọn và thanh lịch.

    Ví dụ: để xóa

    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.