Czyli robimy Worda z Excela 🙂
Rety, już kolejny wpis o funkcjonalnościach Worda w Excelu. Ostatnio była korespondencja seryjna i indeks górny (np. m2), a dziś o wielkości liter.
Już wielokrotnie napotkałam sytuację, że dostałam dane, gdzie wszystko był napisane małymi literami, a ja chciałam, aby wielkość liter była taka, jak w zdaniu, czyli zamienić wielkość pierwszej litery w zdaniu na wielką, a pozostałe na małe. Sprawa pozornie prosta, wystarczy znaleźć odpowiednią funkcję, ale… nie ma takiej 🙂 W Excelu mamy 3 funkcje umiejące zmienić wielkość liter, ale żadna nie umie zmienić ich w taki właśnie sposób. W Wordzie – nie ma problemu:
Ale nie w Excelu… Na szczęście na spokojnie można poradzić sobie z tą sytuacją. Tylko za pomocą formuły, używającej kilku funkcji tekstowych.
Załóżmy, że teksty, w których chcemy zamienić wielkość liter są w kolumnie B takiej formatki:
Jak widać – mamy 3 warianty (można oczywiście stworzyć więcej konfiguracji, ale te wyczerpują temat ;)):
- tylko małe litery
- tylko wielkie litery
- litery różnej wielkości
Moim celem jest napisanie takiej formuły, która we wszystkich tych wariantach ustawi pierwszą literę zdania na wielką, a pozostałe na małe.
Logika formuły
Najpierw z tekstu wytniemy pierwszy znak – posłuży nam do tego cudowna funkcja tekstowa LEWY. Późnej zamienimy tę literę na wielką, za pomocą funkcji LITERY.WIELKIE.
Następnie wyodrębnimy pozostałą część zdania. Zrobimy to funkcją PRAWY, której każemy wyciąć tyle znaków od końca tekstu, ile jest w całym tekście minus jeden (ten jeden to pierwsza litera, którą zamieniamy na wielką). Do obliczenia długości tekstu posłużymy się funkcją DŁ.
Jak już to będziemy mieli – wrzucimy to w funkcję LITERY.MAŁE, aby zamienić na małe litery oczywista, i całość połączymy ze sobą. Formułą wygląda tak…
Formuła
Pierwszy krok to wycięcie pierwszej litery i zamiana jej na wielką:
LITERY.WIELKIE(LEWY(B5))
Następnie wyodrębnienie reszty zdania:
PRAWY(B5;DŁ(B5)-1)
Potem zamiana wielkości liter w tej reszcie na małe:
LITERY.MAŁE(PRAWY(B6;DŁ(B6)-1))
I sklejenie wszystkiego ze sobą, za pomocą &:
=LITERY.WIELKIE(LEWY(B5))&LITERY.MAŁE(PRAWY(B5;DŁ(B5)-1))
Efekt tego otrzymujemy taki:
Tadam! Cała filozofia.
Formułka działa, tylko… jak dla mnie jest strasznie upierdliwa. Za trzecim razem, kiedy okazało się, że jej potrzebuję, stwierdziłam, że nie chce mi się jej pisać od nowa, tylko napiszę sobie funkcje w VBA, która będzie dostępna w każdym otwartym arkuszu. Ale to pokażę Wam w kolejnym wpisie 😉
A póki co pik do pobrania:
I film, pokazujący proces pisania tej formuły:
A w kolejnym wpisie to samo, tylko za pomocą funkcji VBA 🙂
0 komentarzy