Công thức Excel: Tách văn bản và số -

Mục lục

Công thức chung

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Tóm lược

Để tách văn bản và số, bạn có thể sử dụng công thức dựa trên hàm TÌM, hàm MIN và hàm LEN với hàm LEFT hoặc RIGHT, tùy thuộc vào việc bạn muốn trích xuất văn bản hay số. Trong ví dụ được hiển thị, công thức trong C5 là:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))

trả về 7, vị trí của số 3 trong chuỗi "apple30".

Giải trình

Tổng quat

Công thức trông có vẻ phức tạp, nhưng cơ học thực tế khá đơn giản.

Như với hầu hết các công thức tách hoặc trích xuất văn bản, điều quan trọng là xác định vị trí của thứ bạn đang tìm kiếm. Khi bạn đã có vị trí, bạn có thể sử dụng các chức năng khác để trích xuất những gì bạn cần.

Trong trường hợp này, chúng tôi giả định rằng số và văn bản được kết hợp và số xuất hiện sau văn bản. Từ văn bản gốc, xuất hiện trong một ô, bạn muốn chia văn bản và số thành các ô riêng biệt, như sau:

Nguyên Bản văn Con số
Táo30 Táo 30
đào24 trái đào 24
cam12 những quả cam 12
đào0 trái đào 0

Như đã nêu ở trên, chìa khóa trong trường hợp này là xác định vị trí bắt đầu của số, bạn có thể thực hiện điều này với công thức như sau:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Khi bạn đã có vị trí, để chỉ trích xuất văn bản, hãy sử dụng:

=LEFT(A1,position-1)

Và, để chỉ trích xuất số, hãy sử dụng:

=RIGHT(A1,LEN(A1)-position+1)

Trong công thức đầu tiên ở trên, chúng ta đang sử dụng hàm FIND để xác định vị trí bắt đầu của số. Đối với find_text, chúng tôi đang sử dụng hằng số mảng (0,1,2,3,4,5,6,7,8,9), điều này khiến hàm FIND thực hiện tìm kiếm riêng biệt cho từng giá trị trong hằng số mảng. Vì hằng số mảng chứa 10 số nên kết quả sẽ là một mảng có 10 giá trị. Ví dụ: nếu văn bản gốc là "apple30", mảng kết quả sẽ là:

(8,10,11,7,13,14,15,16,17,18)

Mỗi số trong mảng này đại diện cho vị trí của một mục trong hằng số mảng bên trong văn bản gốc.

Tiếp theo, hàm MIN trả về giá trị nhỏ nhất trong danh sách, tương ứng với vị trí của số đầu tiên xuất hiện trong văn bản gốc. Về bản chất, hàm FIND nhận tất cả các vị trí số và MIN cho chúng ta vị trí số đầu tiên: lưu ý rằng 7 là giá trị nhỏ nhất trong mảng, tương ứng với vị trí của số 3 trong văn bản gốc.

Bạn có thể thắc mắc về cấu trúc kỳ lạ cho within_text trong hàm find:

B5&"0123456789"

Phần này của công thức nối mọi số 0-9 có thể với văn bản gốc trong B5. Thật không may, FIND không trả về 0 khi không tìm thấy giá trị, vì vậy đây chỉ là một cách thông minh để tránh các lỗi có thể xảy ra khi không tìm thấy một số.

Trong ví dụ này, vì chúng tôi đang giả định rằng số sẽ luôn xuất hiện thứ hai trong văn bản gốc, nó hoạt động tốt vì MIN chỉ buộc trả về số nhỏ nhất hoặc lần xuất hiện đầu tiên của một số. Miễn là một số xuất hiện trong văn bản gốc, vị trí đó sẽ được trả lại.

Nếu văn bản gốc không chứa bất kỳ số nào, vị trí "không có thật" bằng độ dài của văn bản gốc + 1 sẽ được trả về. Với vị trí không có thật này, công thức LEFT ở trên sẽ vẫn trả về văn bản và công thức RIGHT sẽ trả về một chuỗi rỗng ("").

Liên kết tốt

Công thức của Rick Rothstein trên Mr Excel

thú vị bài viết...