Like

Zdarza się, że dostajemy listę wygenerowaną przez użytkowników. Np. imion i nazwisk. Nie wiedzieć czemu, niektórzy ludzie używają cały czas CAPS LOCKA i wszystko piszą wielkimi literami. Inni w ogóle nie zauważają o co chodzi i mieszają litery lub czasem zdarza im się, że zamiast pierwszej dużej, pojawiają się dwie duże. Pokażę Wam jak to szybko ogarnąć.

Do lektury przyda się plik roboczy, który zawiera opisywane przykłady.

Zmiana wszystkich liter na wielkie

Służy do tego funkcja UPPER (LITERY.WIELKIE).

Składnia:

=Upper(tekst lub odwołanie)

W koluumnie E i F zastosowałem funkcję UPPER. W wierszu 10 widać, że jeśli trafimy na ciąg wielu wyrazów w komórce to zamieni ona wszystkie wyrazy.

Zmiana wszystkich liter na małe

Służy do tego funkcja LOWER (LITERY.MAŁE).

Składnia:

=Lower(tekst lub odwołanie)

=Lower(B4) sprawia, że zawartość komórki jest pisana małą literą. Dotyczy to również polskich znaków.

Zmiana wielkości liter, żeby zaczynać z wielkiej

Służy do tego funkcja PROPER (Z.WIELKIEJ.LITERY).

Składnia:

=Proper(tekst lub odwołanie)

Poniżej przykład zastosowania. W kolumnie B i C są zabałaganione dane, a w kolumnach E i F potraktowane funkcją PROPER.

Przykład zastosowania funkcji PROPER. Uporządkowane zostały wszystkie imiona i nazwiska z niebieskiej tabeli. W przypadku, gdy w komórce jest tekst, widać że funkcja zadziałała na wszystkie wyrazy.

Zmiana, żeby pisać z wielkiej, ale tylko pierwszy wyraz w komórce

Zdarza się, że w komórce jest kilka wyrazów, ale chcemy jednak by tylko pierwszy był z wielkiej litery. Np. na liście produktów. Żeby to zrobić w jednym zapisie, musimy trochę zaczarować.

Sposób 1

=UPPER(LEFT(B10;1))&lower(right(B10;len(B10)-1))

gdzie B10 zawiera przerabiany ciąg.

Wyjaśnienie krok po kroku całego zapisu.

Zmieńmy całość na małe litery:

=LOWER(B10) zmienia całą zawartość komórki B10 na małe litery.

Zmieńmy pierwszą literę od lewej na wielką

=UPPER(LEFT(B10;1)) bierze jedną literę z lewej strony ciągu w komórce B10 i zamienia ją na wielką.

Wywalmy nadmiarową małą literę n. Czyli usuwamy pierwszą literę z ciągu. W praktyce oznacza to zmierzenie długości ciągu i wzięcia od prawej strony wszystkich znaków prócz jednego.

len(E10) sprawdza długość ciągu. Następnie bierzemy od prawej strony tyle znaków ile ma ciąg minus jeden znak. Funkcja RIGHT(ciąg;ilość znaków).

Sklejamy wszystkie 3 operacje w jedną formułę.

Voila! Teraz już wszystkie wyrazy prócz pierwszego są pisane z małej litery.

Sposób 2

W drugim sposobie operujemy na całych wyrazach, a nie na pojedynczych znakach.

=proper(split(B10;" "))&" "&join(" ";query(transpose(split(lower(B10);" "));"select * offset 1"))

gdzie B10 zawiera obsługiwany ciąg.

Wyjaśnienie krok po kroku całego zapisu.

Zmieńmy całość na małe litery:

=LOWER(B10) zmienia całą zawartość komórki B10 na małe litery.

Pokrójmy ciąg na kawałki, używając spacji jako separatora

=split(B10;” “) rozbija ciąg znaków tworząc z nich tabelę.

Pokrójmy ciąg składający się z małych liter

=split(lower(B10);” “) – najpierw zmienia wszystkie litery na małe, a potem kroi ciąg.

Zmieńmy pierwszy wyraz na pisany z wielkiej litery

Obudowujemy funkcję split funkcją proper. Ponieważ nie jest ona dostosowana do pracy na tabelach – działa tylko na pierwszej komórce tabeli stworzonej przez split. Resztę ignoruje. I o to nam chodzi.

Usuńmy pierwszy wyraz z pokrojonego ciągu. Czyli przeróbmy tabelę na pionową, obetnijmy wiersz z góry.

Lower(b10) robi małe litery, split kroi na tabelę poziomą, transpose przerabia ją na tabelę pionową. query bierze całą pionową tabelę i obcina jej pierwszy wiersz.

Niestety nie wiem jak obciąć pierwszą kolumnę z poziomej tabeli. Zaangażowanie zwykłej funkcji OFFSET tu nie pomagało. Stąd ten “fikołek” z użyciem QUERY.

Sklejmy ze sobą pierwszy wyraz z wielkiej litery z pozostałymi pisanymi małymi i upakujmy to w jednej komórce.

=proper(split(B10;” “))&” “&join(” “;query(transpose(split(lower(B10);” “));”select * offset 1”))

&” “& umieszczony w środku służy do sklejenia dwóch funkcji i umieszczenia między ich wynikami spacji, czyli ” “. Funkcja join() skleja tabelę utworzoną w poprzednim etapie. Między każdy z elementów tabeli wprowadza spację.

Dwa sposoby wzięły się z tego, że zrobiłem “Czelendż” koledze – Michałowi i zapytałem się czy potrafi poradzić sobie z takim przerobieniem ciągu. Podał swój sposób, który był zbliżoną (nieco zagmatwaną) wersją sposobu pierwszego. Udało mi się go trochę uprościć. Mój pomysł to pomysł drugi – teraz widać, że mniej intuicyjny (a pierwotnie był jeszcze bardziej pognieciony).

Przerabianie ciągu wielu wyrazów, tak żeby uzyskać wielką literę tylko w pierwszym wyrazie, nie zawsze sprawi, że uzyskamy poprawne zdanie. Przecież są jeszcze imiona, nazwy geograficzne, etc…. więc nie należy używać tego narzędzia do korekty językowej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.