11

У меня есть лист Excel с текстовыми значениями, например, в A1: "Это текст". Мне нужно найти позицию последнего пробела. Есть ли формула Excel, которая даст мне желаемый результат? Я пробовал НАЙТИ и ПОИСК, однако они начинаются слева, мне нужно начать справа.

2 ответа2

21

Если под пустым значением вы подразумеваете "пробел", а под XLS вы имеете в виду Excel, тогда вы можете использовать эту формулу (при условии, что тест, в котором вы хотите найти последний пробел, находится в A1):

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

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

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

Вот еще один способ, любые символы разрешены в A1 (даже снеговики!)

=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]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .