=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))
Jak to działa?
Najpierw mamy IF
oświadczenie, które pozwala nam traktować rzeczy inaczej, jeśli jest jeden (lub mniej) okres, lub jeśli są co najmniej 2 okresy.
Nasz test logiczny polega na sprawdzeniu, czy istnieje drugi okres: LEN(A1)-LEN(SUBSTITUTE(A1, ".", "", 2))
Zwróci się, 0
jeśli nie będzie w stanie znaleźć 2 kropek w ciągu, lub 1
) jeśli są 2 lub więcej.
Następnie najpierw stawiamy formułę „jeśli są 2 lub więcej okresów”, a drugą „jeśli jest mniej niż 2 okresy”, ale ponieważ ta ostatnia jest znacznie prostsza, omówię ją najpierw.
Jeśli są mniej niż 2 okresy:
Jeśli występuje jeden lub zero okresów, musimy usunąć tekst do ://
początku włącznie , więc znajdziemy pozycję ://
i weźmiemy tylko tekst po nim: RIGHT(A1, LEN(A1)-FIND("://", A1)-2)
na wypadek, gdyby dane zawierały dane „ t zaczynając od protokołu kończącego się na ://
, powinniśmy otoczyć to IFERROR
i otrzymać cały oryginalny ciąg zamiast #VALUE
błędu, co kończy się następująco:IFERROR(RIGHT(A1, LEN(A1)-FIND("://", A1)-2), A1)
Jeśli są (co najmniej) 2 okresy
Teraz, gdy mamy prostsze przypadki na bok, spójrzmy na to, co się stanie, gdy będą 2 (lub więcej) okresów: SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(A1, ".", REPT(" ", LEN(A1))), LEN(A1)*2)), " ", ".")
Rozbijmy to:
- Zastępujemy wszystkie kropki dużą liczbą spacji (tyle, ile znaków w całym oryginalnym ciągu):
SUBSTITUTE(A1, ".", REPT(" ", LEN(A1)))
- Bierzemy tylko jego koniec, a konkretnie dwukrotność długości oryginalnego łańcucha. To daje nam dwie ostatnie części i kilka spacji przed i między 2 częściami:
RIGHT(<step 1>, LEN(A1)*2)
Uwaga: Jeśli chcesz dołączyć również następną sekcję, zmienisz *2
na *3
.
- Usuwamy wszystkie obce przestrzenie za pomocą
TRIM
, pozostawiając nam tylko jedno miejsce, gdzie pozostałym okresem powinien być:TRIM(<step 2>)
- Zastępujemy jedną pozostałą przestrzeń
.
:SUBSTITUTE(<step 3>, " ", ".")
Nasza cała formuła to:
=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))