У меня есть лист Excel с текстовыми значениями, например, в A1: "Это текст". Мне нужно найти позицию последнего пробела. Есть ли формула Excel, которая даст мне желаемый результат? Я пробовал НАЙТИ и ПОИСК, однако они начинаются слева, мне нужно начать справа.
2 ответа
Если под пустым значением вы подразумеваете "пробел", а под XLS вы имеете в виду Excel, тогда вы можете использовать эту формулу (при условии, что тест, в котором вы хотите найти последний пробел, находится в A1):
=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))
Вы можете разделить его на 3 части:
- LEN(A1)-LEN(SUBSTITUTE(A1," ",""))дает вам количество пробелов, давайте назовем это- x,
- SUBSTITUTE(A1," ","☃",[x])заменит- xе пространство (таким образом, последнее) на снеговика,
- FIND("☃",[...])даст вам положение снеговика. Какая позиция последнего пробела.
Вот еще один способ, любые символы разрешены в 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]
