Tôi cần tìm Khoảng trống cuối cùng trong Ô XLS


17

Tôi có một bảng Excel với các giá trị văn bản, ví dụ như trong A1: "Đây là văn bản". Tôi cần tìm vị trí của nhân vật không gian cuối cùng. Có một công thức excel sẽ cho tôi kết quả tôi muốn? Tôi đã thử TÌM KIẾM và TÌM KIẾM, tuy nhiên những điều này bắt đầu từ bên trái, điều tôi cần là bắt đầu từ bên phải.


Trang web trùng lặp trùng lặp về cùng một loại cổ điển: stackoverflow.com/q/18617349
Mathieu K.

Câu trả lời:


28

Nếu theo giá trị trống, bạn có nghĩa là "khoảng trắng" và theo XLS, bạn có nghĩa là Excel, thì bạn có thể sử dụng công thức này (giả sử bài kiểm tra bạn muốn tìm khoảng trống cuối cùng nằm trong A1):

=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

Bạn có thể chia nó thành 3 phần:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))cung cấp cho bạn số lượng không gian, hãy gọi nó là x,
  • SUBSTITUTE(A1," ","☃",[x])sẽ thay thế xkhông gian thứ (vì vậy không gian cuối cùng) bởi một người tuyết,
  • FIND("☃",[...])sẽ cho bạn vị trí của người tuyết. Đó là vị trí của không gian cuối cùng.

Hoạt động hoàn hảo. Cảm ơn. Tôi phải mất một thời gian để tìm ra lý do tại sao nó hoạt động tốt cho lời giải thích của bạn :)
Dheer

5
+1 cho câu trả lời hay, chi tiết và nhân vật thay thế sáng tạo nhất.
Doug Glancy 26/11/13

Cũng hoạt động trong cả LibreScript Calc và Google Sheets.
Mathieu K.

8

Đây là một cách khác, bất kỳ nhân vật nào cũng được phép trong A1 (ngay cả người tuyết!)

=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))

FIND có một đối số thứ ba xác định vị trí bắt đầu của tìm kiếm, nếu bạn áp dụng một mảng các giá trị nguyên từ 1 đến n (trong đó n là độ dài của A1) cho tham số đó, bạn sẽ nhận được một mảng với số cuối cùng là vị trí của không gian cuối cùng.

LOOKUPsau đó trích xuất số đó bằng cách tìm kiếm một giá trị lớn hơn bất kỳ giá trị nào có thể tìm thấy trong mảng đó, trong trường hợp đó, số cuối cùng được tìm thấy

Trong Excel 2010hoặc sau này bạn cũng có thể sử dụng AGGREGATEchức năng như thế này

=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)

FINDtrả về cùng một mảng như trước và bằng cách sử dụng 14 làm đối số thứ nhất AGGREGATEvà 1 là cuối cùng bạn nhận được giá trị lớn nhất trong mảng, trong khi bỏ qua lỗi [6]


1
làm việc tuyệt vời Mặc dù tôi đã là nhà phát triển cách đây rất lâu nhưng tôi vẫn không thể hiểu làm thế nào và tại sao INDIRECT hoạt động :)
Dheer

1
Giả sử A1 có 12 ký tự thì phần này ước tính thành "1:"&LEN(A1)"1:12" - đó là một chuỗi mà ROW không thể xử lý nhưng INDIRECT chuyển đổi một chuỗi thành một tham chiếu hợp lệ mà ROW có thể xử lý để ROW (1:12) sau đó cung cấp cho bạn {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
barry houdini

Cảm ơn đã làm rõ. Không có ý nghĩa bây giờ. Điều đó có nghĩa là Find chính nó hoạt động với mảng và được thực thi cho mọi giá trị là vị trí bắt đầu ...
Dheer

Đúng vậy, FIND trả về một mảng, ví dụ nếu A1 chứa barry larry houdinithì FIND sẽ trả về mảng này {6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}và LOOKUP và / hoặc AGGREGATE sẽ lấy giá trị số cuối cùng / lớn nhất từ ​​đó, tức là 12
barry houdini

Lưu ý: điều này hoạt động trong LibreScript Calc. Nó không hoạt động trong Google Sheets, thay vào đó là lần xuất hiện đầu tiên.
Mathieu K.
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.