Excel, jak szukać określonego podłańcucha o zmiennej długości i zwracać ciąg bez tego podciągu?

0

Nie jestem pewien, jak nazwać to pytanie.

Mam skomplikowane wyzwanie, które nie jestem pewien, jak podejść w Excelu.

Mam kolumnę z długimi łańcuchami o zmiennej długości, przykład

c68d7a51-5cef-4a5c-b417-b2751fe9754b  
c68d7a51-5cef-4a5c-b417-b2751fe9754b-0  
c68d7a51-5cef-4a5c-b417-b2751fe9754b-1
09573f-1780c84f-e5ff-85821a-6236e0399d
09573f-1780c84f-e5ff-85821a-6236e0399d-10
09573f-1780c84f-e5ff-85821a-6236e0399d-123

Gdzie dla tych, które kończą się znakiem „- ***”, muszę mieć nową kolumnę, która zwraca ciąg znaków bez tego zakończenia PRAWEGO podłańcucha, w przeciwnym razie null. Końcowy podciąg ma od 1 do 3 znaków długo po znaku „-”. Muszę również zauważyć na podstawie komentarzy, że nie mogę pracować od lewej, ponieważ ciągi zmieniają długość i położenie „-”. Jedyną stałą jest to, że niektóre z tych ciągów znaków mają wartości potomne od 1 do 3 cyfr po ostatnim „-”.

To, co do tej pory mam na zarys, wygląda tak

=IF(RIGHT(A1,4) contains "-", RIGHT(A1, LEN(A1) - number_of_chars_to_remove), else null. 

Jeśli nie masz nic przeciwko, jak mam to osiągnąć?

Doceniam twoją pomoc, dziękuję!

Rakieta Spaceman
źródło
czy zawsze jest 4, -a następnie -chcesz usunąć?
Scott Craner,
Cześć Scott, 4 jest maksymalną długością końcowego podciągu z prawej strony całego łańcucha, łącznie z dzielnikiem „-”. Ale czasami ostatnie 4 ciągi znaków nie będą zawierać „-”, co oznacza, że ​​zwróci wartość null, ponieważ wszystko jest w porządku. Ale kiedy ostatnie 4 zawierają „-”, muszę usunąć „-” i wszystko po nim dla nowej kolumny. Gdzie znaki po „-” (w ostatnich 4) będą miały 1, 2 lub 3 cyfry.
Rocket Spaceman
Nie o to prosiłem. W tej chwili masz wzór, który można wykorzystać. Masz 4 lub 5 „-” i chcesz ciąg przed piątym „-” lub null, jeśli nie ma piątego „-”. Więc pytam ponownie, czy zawsze są 4 ”-” z piątym ”-„ decydującym w twoich strunach?
Scott Craner,
Och, po lewej stronie sznurka? tak, źle cię zrozumiałem, żadna lewa część ciągu nie jest losowa, ponieważ zmienia zarówno długość, jak i liczbę myślników, dlatego nie mogę pracować od lewej.
Rocket Spaceman

Odpowiedzi:

1

Użyj tego:

=IF(ISNUMBER(FIND("-",RIGHT(A1,4))),LEFT(A1,FIND("}}}",SUBSTITUTE(A1,"-","}}}",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))-1),"")

Najpierw sprawdza, czy jest -w ostatnich czterech, jeśli tak, to znajduje to ostatnie -i zmienia je na }}}. Następnie znajduje to i czyni koniec równania LEWEGO.

wprowadź opis zdjęcia tutaj

Scott Craner
źródło
Jesteś magikiem! Dziękuję bardzo! Uratowałeś mi bekon!
Rocket Spaceman
0

Wydaje mi się, na podstawie twoich przykładowych danych, że możesz policzyć ciąg i jeśli ma on 5 myślników, zwróć pierwsze 38 znaków, w przeciwnym razie zwróć NULL. To byłoby o wiele prostsze. 38 ma znaczenie, ponieważ ma długość ciągu aż do piątej kreski.

AlwaysLearning
źródło
Dobra sugestia, jedyną stałą, jaką mam w myślnikach, jest albo myślnik w ostatnich 4, albo nie. Ponieważ ciąg - lokalizacje po lewej stronie będą losowe .. Wiem, że to naprawdę niechlujny ... ale dlatego staram się pracować z prawej zamiast z lewej. ponieważ prawo jest najbardziej stałym rezultatem, z którym muszę pracować, wiedząc, że ostatnie 4 albo będą miały kreskę, albo nie. a jeśli ma myślnik, będzie miał po nim od 1 do 3 cyfr.
Rocket Spaceman