У меня есть лист Excel с текстовыми значениями, например, в A1: «Это текст». Мне нужно найти позицию последнего символа пробела. Есть ли формула Excel, которая даст мне желаемый результат? Я пробовал НАЙТИ и ПОИСК, однако они начинаются слева, мне нужно начать справа.
17
Ответы:
Если под пустым значением вы подразумеваете «пробел», а под XLS вы имеете в виду Excel, тогда вы можете использовать эту формулу (при условии, что тест, в котором вы хотите найти последний пробел, находится в
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]источник
"1:"&LEN(A1)
оценивается как «1:12» - это строка, которую ROW не может обработать, но INDIRECT преобразует строку в допустимую ссылку, которую ROW может обработать, поэтому ROW (1:12) дает вам {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}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