Hướng dẫn how do i extract the second last word in excel? - làm cách nào để trích xuất từ ​​​​cuối cùng thứ hai trong excel?

mozjesse,

Tôi thích giải pháp của Barry (trong ảnh chụp màn hình dưới đây, các mục in đậm).bold).

Nhưng, một cách khác:

Sổ làm việc Excel
MộtBC
1Đây là một bài kiểm tra để tìm từ thứ hai đến cuối cùng trong một chuỗi rất dài.DàiDài
2Đây là một thử nghiệm để tìm từ thứ hai đến cuối cùng trong một chuỗi dài.DàiDài
3Đây là một thử nghiệm để tìm từ thứ hai đến cuối cùng trong một chuỗi dài.Đây là một thử nghiệm để tìm từ thứ hai đến cuối cùng trong một chuỗi.Đây là một thử nghiệm để tìm từ thứ hai đến cuối cùng trong một chuỗi.
4mộtĐây là một bài kiểm tra để tìm lần thứ hai đến cuối cùngĐây là một bài kiểm tra để tìm lần thứ hai đến cuối cùng
5đến10 10

Sheet1

01019000 - LOS DEMS 10 A

Vui lòng kiểm tra điều này đầu tiên trong một bản sao của sổ làm việc của bạn (luôn tạo bản sao lưu trước khi thử mã mới, bạn không bao giờ biết những gì bạn có thể mất).

Nhấn và giữ phím 'Alt' và nhấn phím 'F11'.

Chèn một mô -đun vào VBAPROVECT của bạn, Microsoft Excel đối tượng

Sao chép mã dưới đây và dán nó vào mô -đun1.

Option Explicit
Option Compare Text
Function Get_Word(text_string As String, nth_word) As String
'
' http://www.ozgrid.com/News/jul-2005.htm
'
Dim lWordCount As Long
    With Application.WorksheetFunction
        lWordCount = Len(text_string) - Len(.Substitute(text_string, " ", "")) + 1
        If IsNumeric(nth_word) Then
           nth_word = nth_word - 1
            Get_Word = Mid(Mid(Mid(.Substitute(text_string, " ", "^", nth_word), 1, 256), _
                .Find("^", .Substitute(text_string, " ", "^", nth_word)), 256), 2, _
                .Find(" ", Mid(Mid(.Substitute(text_string, " ", "^", nth_word), 1, 256), _
                .Find("^", .Substitute(text_string, " ", "^", nth_word)), 256)) - 2)
        ElseIf nth_word = "First" Then
            Get_Word = Left(text_string, .Find(" ", text_string) - 1)
        ElseIf nth_word = "Last" Then
            Get_Word = Mid(.Substitute(text_string, " ", "^", Len(text_string) - _
            Len(.Substitute(text_string, " ", ""))), .Find("^", .Substitute(text_string, " ", "^", _
            Len(text_string) - Len(.Substitute(text_string, " ", "")))) + 1, 256)
        End If
    End With
End Function

Mã số:
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))

Để sử dụng hàm "GET_WORD", tôi đã đếm số lượng khoảng trống trong chuỗi với: = Len (A1) -Len (thay thế (A1, "", ""))
=Get_Word(A1,LEN(A1)-LEN(SUBSTITUTE(A1," ","")))

Công thức/hàm trong ô B1 (đã sao chép xuống) (để có từ thứ hai đến từ cuối cùng): = get_word (a1, len (a1) -len (thay thế (a1, "", "")))
Stan

Explanation 

Ở lõi, công thức này sử dụng hàm giữa để trích xuất các ký tự bắt đầu từ không gian thứ hai đến cuối cùng. Hàm mid có 3 đối số: văn bản để làm việc, vị trí bắt đầu và số lượng ký tự để trích xuất.

Văn bản đến từ cột B và số lượng ký tự có thể là bất kỳ số lượng lớn nào sẽ đảm bảo hai từ cuối được trích xuất. Thách thức là xác định vị trí bắt đầu, chỉ sau không gian thứ hai đến cuối cùng. Công việc thông minh được thực hiện chủ yếu với hàm thay thế, có một đối số tùy chọn gọi là số phiên bản. Tính năng này được sử dụng để thay thế không gian thứ hai đến cuối cùng trong văn bản bằng ký tự "@", sau đó được đặt với hàm tìm.

Làm việc từ trong ra ngoài, đoạn trích bên dưới tìm ra tổng số không gian trong tổng số văn bản, từ đó 1 được trừ đi.

LEN(B5)-LEN(SUBSTITUTE(B5," ",""))-1

Trong ví dụ được hiển thị, có 5 khoảng trắng trong văn bản, vì vậy mã trên trả về 4. Số này được đưa vào hàm thay thế bên ngoài dưới dạng số ví dụ:

SUBSTITUTE(B5," ","@",4)

Điều này khiến thay thế để thay thế ký tự không gian thứ tư bằng "@". Sự lựa chọn của @ là tùy ý. Bạn có thể sử dụng bất kỳ ký tự nào sẽ không xuất hiện trong văn bản gốc.

Tiếp theo, tìm vị trí ký tự "@" trong văn bản:

FIND("@","A stitch in time@saves nine")

Kết quả của tìm thấy là 17, trong đó 1 được thêm vào để có được 18. Đây là vị trí bắt đầu và đi vào hàm giữa làm đối số thứ hai. Để đơn giản, số lượng ký tự để trích xuất được mã hóa cứng là 100. Số này tùy ý và có thể được điều chỉnh để phù hợp với tình huống.

Trích xuất n từ cuối cùng từ ô

Công thức này có thể được khái quát hóa để trích xuất các từ N cuối cùng từ một ô bằng cách thay thế 1 mã hóa trong ví dụ bằng (N-1). Ngoài ra, nếu bạn đang trích xuất nhiều từ, bạn có thể muốn thay thế đối số được mã hóa cứng vào giữa, 100, với số lượng lớn hơn. Để đảm bảo cho bạn số đủ lớn, bạn có thể chỉ cần sử dụng chức năng LEN như sau:

=MID(B5,FIND("@",SUBSTITUTE(B5," ","@",LEN(B5)-LEN(SUBSTITUTE(B5," ",""))-(N-1)))+1,LEN(B5))