=IF(LEN(A1)-LEN(SUBSTITUTE(A1, ".", "", 2)), SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(A1, ".", REPT(" ", LEN(A1))), LEN(A1)*2)), " ", "."), IFERROR(RIGHT(A1, LEN(A1)-FIND("://", A1)-2), A1))
Как это работает?
Сначала у нас есть оператор IF
который позволяет нам по-разному относиться к вещам, если есть один (или меньше) периодов, или если есть хотя бы 2 периода.
Наш логический тест - проверить, существует ли второй период: LEN(A1)-LEN(SUBSTITUTE(A1, ".", "", 2))
Это вернет 0
если он не может найти 2 периода в строке, или 1
), если есть 2 или более.
Затем мы сначала помещаем формулу «если есть 2 или более периодов», а формулу «если есть менее 2 периодов» - вторые, но, поскольку последние намного проще, я расскажу о них в первую очередь.
Если есть менее 2 периодов:
Если есть один или ноль периодов, то нам нужно удалить текст до и включая ://
в начале, поэтому мы найдем позицию ://
и возьмем только текст после него: RIGHT(A1, LEN(A1)-FIND("://", A1)-2)
Только в случае , если есть данные , которые не начинаются с протоколом , заканчивающимся ://
мы должны обернуть это с IFERROR
и получить всю исходную строку вместо ошибки #VALUE
это заканчивается существо: IFERROR(RIGHT(A1, LEN(A1)-FIND("://", A1)-2), A1)
Если есть (по крайней мере) 2 периода
Теперь, когда у нас есть более простые случаи, давайте посмотрим, что происходит, когда существует 2 (или более) периода: SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(A1, ".", REPT(" ", LEN(A1))), LEN(A1)*2)), " ", ".")
Давайте разберемся с этим:
- Мы заменяем все периоды большим количеством пробелов (столько, сколько имеется символов во всей исходной строке):
SUBSTITUTE(A1, ".", REPT(" ", LEN(A1)))
- Мы берем только конец этого, а именно удвоенную длину исходной строки. Это дает нам последние две части и кучу пробелов перед и между двумя частями:
RIGHT(<step 1>, LEN(A1)*2)
Примечание. Если вы хотите включить следующий раздел, измените значение *2
на *3
.
- Мы удаляем все посторонние пространства, используя
TRIM
, оставляя нам только один пробел, где оставшийся период должен быть: TRIM(<step 2>)
- Заменим это оставшееся пространство на
.
: SUBSTITUTE(<step 3>, " ", ".")
Таким образом, вся наша формула выглядит следующим образом:=IF(LEN(A1)-LEN(SUBSTITUTE(A1, ".", "", 2)), SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(A1, ".", REPT(" ", LEN(A1))), LEN(A1)*2)), " ", "."), IFERROR(RIGHT(A1, LEN(A1)-FIND("://", A1)-2), A1))