Мені потрібно знайти останній пробіл у комірці XLS


17

У мене є лист Excel із текстовими значеннями, наприклад, в A1: "Це текст". Мені потрібно знайти позицію останнього символу пробілу. Чи є формула excel, яка дасть мені бажаний результат? Я спробував ЗНАЙТИТИ та ПОШУК, однак вони починаються зліва, що мені потрібно - почати з правого.


Дублікат з різних сайтів приблизно одного і того ж урожаю: stackoverflow.com/q/18617349
Матьє К.

Відповіді:


28

Якщо під порожнім значенням ви маєте на увазі "пробіл", а під XLS ви маєте на увазі Excel, ви можете використовувати цю формулу (припускаючи тест, у якому ви хочете знайти останнє пробіл A1):

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

Ви можете розділити його на 3 частини:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))дає вам кількість пробілів, назвемо це x,
  • SUBSTITUTE(A1," ","☃",[x])замінить цей xпростір (таким чином останній) сніговиком,
  • FIND("☃",[...])дасть вам посаду сніговика. Яка позиція останнього пробілу.

Працює ідеально. Дякую. Мені знадобилося певний час, щоб зрозуміти, чому це працює, незважаючи на ваше пояснення :)
Dheer

5
+1 за гарну, детальну відповідь та найкреативніший персонаж заміни досі.
Doug Glancy

Також працює як у LibreOffice Calc, так і в Google Sheets.
Матьє К.

8

Ось ще один спосіб, будь-які символи дозволені в А1 (навіть сніговики!)

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

FIND має третій аргумент, який визначає початкову позицію пошуку, якщо ви застосуєте до цього параметра масив цілих значень від 1 до n (де n - довжина A1), ви отримаєте масив назад, останнє число якого є позицією останній пробіл.

LOOKUPпотім витягує це число шляхом пошуку значення, що перевищує будь-яке значення, яке може бути знайдено в цьому масиві, і в цьому випадку знайдено останнє число

У Excel 2010або пізніше ви також можете використовувати AGGREGATEфункцію, подібну до цієї

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

FINDповертає той самий масив, що і раніше, використовуючи 14 як 1-й аргумент AGGREGATEта 1 як останній, ви отримуєте найбільше значення в масиві, ігноруючи помилки [6]


1
працює чудово. Хоча я [давно] давно був розробником, я все ще не можу зрозуміти, як і чому працює
INDIRECT

1
Якщо припустимо, що в A1 є 12 символів, то ця частина "1:"&LEN(A1)оцінюється як "1:12" - це рядок, який ROW не може обробити, але INDIRECT перетворює рядок у дійсну посилання, яку ROW може обробляти так ROW (1:12), а потім дає вам {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
Баррі Худдіні

Дякую за уточнення. Чи має зараз якийсь сенс Це означає, що Find себе імпліцитно працює з масивом і виконується для кожного значення як вихідної позиції ...
Dheer

Правильно, FIND повертає масив, наприклад, якщо A1 містить, barry larry houdiniто FIND поверне цей масив, {6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}і LOOKUP та / або AGGREGATE прийме останнє / найбільше числове значення від цього, тобто 12
barry houdini

Примітка. Це працює в LibreOffice Calc. Це не працює в Google Таблицях, натомість знаходить перше виникнення.
Матьє К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.