У меня есть лист 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]