Excel trích xuất chuỗi con từ chuỗi


22

Tôi đang tìm cách trích xuất một chuỗi con có độ dài thay đổi từ một chuỗi.

Các tế bào của tôi sẽ trông giống như:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Tôi muốn tách chuỗi tại -ký tự, vì vậy các ô sẽ trở thành:

ABC
ABCDE
ABCD

Điều này nên được thực hiện với một công thức và không phải VBScript.

Tôi đang sử dụng Excel 2010

CHỈNH SỬA

Tôi thấy rằng tập dữ liệu không phải lúc nào cũng chứa -ký tự, có nghĩa là sẽ không có thay đổi.

Câu trả lời:


26

Vấn đề này có thể được chia thành hai bước:

  1. Tìm chỉ mục trong chuỗi ký tự phân chia mong muốn của bạn (trong trường hợp này "-"hoặc " - ").
  2. Lấy chuỗi con tiền tố từ đầu văn bản gốc đến chỉ mục phân tách.

Các FINDSEARCHlệnh mỗi sẽ trở lại chỉ số của một trao needletrong một haystack( FINDlà trường hợp nhạy cảm, SEARCHlà case-insensitive và cho phép ký tự đại diện). Cho rằng, chúng ta có:

FIND(search_text, source_cell, start_index)

hoặc trong trường hợp này:

FIND(" - ", A1, 1)

Khi chúng ta có chỉ mục, chúng ta cần tiền tố source_cellđể thực hiện "tách". MIDkhông chỉ thế

MID(source_cell, start_index, num_characters)

Đặt cả hai cùng nhau, chúng ta có:

=MID(A1,1,FIND(" - ",A1,1))

với A1 có văn bản ABC - DEFcho ABC.


7

Mở rộng dựa trên câu trả lời của Andrew dựa trên chỉnh sửa của bạn: để tìm chuỗi ký tự cần phân tách, chúng tôi đang sử dụng FINDhàm. Nếu FINDkhông xác định được chuỗi đã cho, nó sẽ trả về #VALUE?lỗi. Vì vậy, chúng ta sẽ cần kiểm tra giá trị này và sử dụng giá trị thay thế.

Để kiểm tra bất kỳ giá trị lỗi nào #VALUE, bao gồm , chúng tôi sử dụng ISERRORhàm, do đó:

=ISERROR(FIND(" - ", A1, 1))

điều đó sẽ đúng nếu FINDhàm không thể tìm thấy chuỗi "-" trong ô A1. Vì vậy, chúng tôi sử dụng để quyết định giá trị nào sẽ sử dụng:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Điều đó nói rằng nếu lệnh find trả về lỗi, hãy sử dụng ô A1 chưa sửa đổi. Nếu không, hãy làm MIDchức năng mà Andrew đã cung cấp.


2

Cảm ơn bạn @AndrewColeson cho câu trả lời của bạn.

Vì vậy, chỉ để thêm vào đó, nếu bạn muốn mọi thứ ở phía bên phải của -, hãy sử dụng mã này:

= TRUNG (A1, LEN (B1) + 3, LEN (A1))

Đó là:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Mã này rất phù hợp nếu bạn có số lượng ký tự không xác định sau -.

Ví dụ:

Nếu bạn có:

ABC - DEFG
AB - CDEFGH
...

đây cũng là mánh khóe =MID(a1,FIND("-",a1)+1,LEN(a1))mà không có bất kỳ tài liệu tham khảo "ngoài tế bào" nào)
Mikey

1

Đây là một cách rất đơn giản để trích xuất ký tự thứ 5 từ bên trái từ chuỗi văn bản trong Excel:

Giả sử chuỗi ký tự ABCDEFGHIJđược lưu trữ trong ô A1 trong Bảng tính Excel, sau đó công thức sau

=RIGHT(LEFT(A1,5),1)

tạo ra ký tự thứ 5 từ bên trái trong chuỗi, cụ thể là E.


(Có không MID? Hàm trong Excel tôi chắc chắn rằng nó tồn tại trong di sản Visual Basic, và nó sẽ là một cái gì đó giống như =MID(A1, 5, 1))
Valmiky Arquissandas

0

Công thức sau đây sẽ xóa một chuỗi con khỏi [TEXTCOLUMN_1]

ví dụ: nếu bạn muốn chuyển đổi -./thumb/hello.jpgsang thumb/hello.jpgthì sử dụng công thức sau

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1]= tên cột mà bạn muốn thay đổi [NUM_OF_CHARACTERS]= số lượng ký tự từ bên trái mà bạn muốn xóa

Nếu bạn muốn loại bỏ từ bên phải thì sử dụng sau

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.