Reggie có một ô chứa ba từ trở lên. (Số lượng từ có thể khác nhau.) Anh ta cần một công thức cho phép anh ta trích xuất từ ​​đầu tiên của ô hoặc từ cuối cùng của ô. Ví dụ: nếu ô chứa cụm từ “Reggie đã ở đây vào năm 2012”, thì anh ta cần một công thức để trích xuất “Reggie” và một công thức để trích xuất “2012”.

Bạn có thể trích xuất cả hai từ bằng công thức. Trích xuất từ ​​đầu tiên là tương đối đơn giản. Tất cả những gì bạn cần làm là tìm vị trí của khoảng trắng đầu tiên trong cụm từ, sau đó trích xuất bất cứ thứ gì ở bên trái của nó. Nếu giả định rằng cụm từ nằm trong A1, người ta có thể sử dụng công thức:

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

Về nguyên tắc, để có được từ cuối cùng có thể được thực hiện như nhau, nó chỉ phức tạp hơn để tìm khoảng trống cuối cùng trong chuỗi. Một cách để làm điều này là:

  1. Đếm số lượng khoảng trắng. Thay đổi khoảng trắng cuối cùng thành một ký tự khác (không nằm ở nơi khác trong cụm từ)

  2. Sau đó tìm “nhân vật khác”

  3. Lấy một phần của cụm từ ở bên phải của “ký tự khác”

“Ký tự khác” người ta có thể sử dụng là ký tự ASCII đầu tiên (tức là ký tự char (1)), không được in và rất khó có trong cụm từ. Số lượng khoảng trắng có thể được tìm thấy bằng cách lấy hiệu số giữa độ dài của cụm từ với độ dài của cụm từ không có khoảng trắng (bằng cách sử dụng SUBSTITUTE để thay thế tất cả các khoảng trắng bằng chuỗi null):

LEN(A1)-LEN(SUBSTITUTE(A1," ",""))

Sau đó, bạn có thể thay thế ký tự (1) cho lần xuất hiện cuối cùng của khoảng trắng:

SUBSTITUTE(A1," ",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ","")))

Sau đó, bạn có thể TÌM vị trí của char (1) trong chuỗi đó:

FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)- LEN(SUBSTITUTE(A1," ",""))))

Ký tự đầu tiên của từ cuối cùng là 1 ký tự sau này:

1+ FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),LEN(A1)- LEN(SUBSTITUTE(A1," ",""))))

Sau đó, bạn có thể sử dụng hàm MID để trích xuất một phần của chuỗi bắt đầu từ vị trí này cho đến khi kết thúc chuỗi. (Bạn không phải tính độ dài chính xác. Nếu bạn chọn một số lớn hơn độ dài của từ cuối cùng, chỉ từ cuối cùng sẽ được chọn. Do đó, bạn có thể bắt đầu tại vị trí trên và trích xuất số ký tự trong chuỗi để đảm bảo bạn có đủ.):

=MID(A1,1+FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),LEN(A1))

Nếu muốn, bạn cũng có thể tạo các hàm do người dùng xác định để lấy các từ bạn muốn. Lấy từ đầu tiên thật dễ dàng:

Function FirstWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

FirstWord = arr(LBound(arr))

End Function

Hàm sử dụng hàm Split để tách bất kỳ thứ gì có trong ô được chỉ định, sử dụng tham số thứ hai (“”) làm dấu phân cách. Mỗi phần tử trong mảng (arr) sau đó chứa một phần của chuỗi ban đầu. Trong trường hợp này, những gì được trả về là phần tử đầu tiên (được chỉ định bởi LBound) của mảng — từ đầu tiên.

Vì các từ của cụm từ đang được đặt trong một mảng, bạn có thể chỉ cần sử dụng một biến thể nhỏ trên hàm để trả về từ cuối cùng:

Function LastWord(c As String)

Dim arr

arr = Split(Trim(c), " ")

LastWord = arr(UBound(arr))

End Function

Lưu ý rằng về cơ bản, thay đổi thực sự duy nhất trong chức năng là việc sử dụng UBound thay vì LBound. Hàm UBound chỉ định phần tử cuối cùng của mảng. Bạn có thể sử dụng cả hai hàm này trong trang tính theo cách sau:

=FirstWord(A1)

=LastWord(A1)

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (11984) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.

Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: