miercuri, 19 octombrie 2011

Siruri de caracter...e: si textul poate contine date utile

De cele mai multe ori, cand vorbim de prelucrarea datelor in Excel / OpenOffice / Google Docs, etc ne gandim la prelucrarea cifrelor, numerelor, sumelor. Insa campurile cu text nu trebuie ignorate!Sirurile de caractere pot deveni o adevarata "mina de date". Trebuie doar sa stim cum sa le prelucram.

Ce inseamna pentru mine siruri de caractere? Simplu: nume si prenume, adrese, coduri de produse, numere de telefon, etc. Din toate acestea se poate "stoarce" mai mult decat pare posibil la prima vedere iar analiza noastra si viteza de realizare a acesteia va capata noi dimensiuni.

Excelul ne pune la dispozitie o serie de formule specializate in prelucrarea sirurilor de caractere. Pentru mine, 8 dintre ele sunt mereu la indemana:
  • lower, UPPER, Proper : pentru a schimba din litere mari in mici si invers
  • Left, Right: pentru a extrage un numar de caractere din stanga sau din dreapta
  • Mid, Find : pentru a extrage un numar de caractere din interiorul unui sir mai lung
  • Concatenate sau & : pentru a combina mai multe siruri de caractere
lower, UPPER, Proper
Pentru a schimba din litere mari in litere mici si invers, cele trei functii sunt perfecte.

lower() : transforma toate caracterele din celula selectata in litere mici.
Se poate intampla ca anumite informatii sa fie scrise cu LITERE MARI sau cu o COmBinAtiE de litere mari si mici.
Oricare ar fi fost intentia autorului, se poate ca pentru anumite rapoarte sau prezentari ale informatiei aceasta forma a textului sa fie deranjanta.
Aplicand functia lower() toate caracterele vor fi scrise cu litere mici.

UPPER():  transforma toate caracterele din celula selectata in litere MARI
Este, practic, functia inversa lui lower(). Foarte utila cand vrem sa accentuam anumite date.

Proper(): prima litera din fiecare cuvant va fi scrisa cu majuscule iar restul cu litere mici
Este varianta de mijloc intre cele doua. Practica pentru nume proprii sau pentru titluri: IONUT POPESCU va deveni Ionut Popescu prin aplicarea functie Proper()

Left, Right
Cand vrem sa extragem partea de inceput sau de final al unui sir de caractere, aceste doua functii sunt foarte utile.

Left(sir de caractere, nr de caractere): extrage primele caractere de la inceputul unui text (din partea stanga).
Numarul de caractere care vor fi extrase este specificat in al doilea argument al functiei. Caracterele sunt numarate de la stanga la dreapta

Right(sir de caractere, nr de caractere): extrage ultimele caractere de la finalul unui text (din partea dreapta).
Numarul de caractere care vor fi extrase este specificat in al doilea argument al functiei. Caracterele sunt numarate de la dreapta la stanga.

Mid si Find
Combinatia acestor doua functii este foarte puternica in prelucrarea avansata a sirurilor de caractere.

Mid: extrage un sub-sir de caractere dintr-un text mai lung. Are urmatoarea sintaxa:
Mid(text, de unde sa inceapa extractia de date, cate caractere sa fie extrase)

De exemplu MID("Ghidul excelului", 8, 5) va extrage 5 caractere incepand cu al 8-lea din "Ghidul excelului".
Al 8-lea caracter este "e" si daca extragem 5 caractere incepand cu "e" obtinem "excel". (si spatiile sunt considerate caractere si sunt numarate).

Find: cauta un text intr-un sir de caractere si returneaza pozitia pe care se afla textul cautat:
Find(text cautat, unde se cauta, de la ce caracter incepe cautarea)
Spre exemplu, avem un numar de telefon: 0269/123333. Daca vreau sa aflu pe pe ce pozitie se afla "/" pot aplica functia Find astfel:
Find("/", "0269/123333", 1). Rezultatul va fi pozitia pe care se "/" in sirul de caractere, si anume 5.

Mid + Find = love
Separate, cele doua functii sunt utile, insa impreuna sunt extrem de utile.

Sa continuam exemplul cu numarul de telefon si sa presupunem ca vrem sa extragem doar numarul, fara prefix dintr-o lista cu numere din capitala si din provincie (deci lungime variabila a numerelor).

Pentru exemplul nostru vom considera doar doua numere, dar functia se poate aplica la o baza de date cu mii de numere: 0269/123456 si 021/1234567.

Inseamna ca vrem sa extragem pana la 7 caractere care se afla dupa "/". Problema este ca acest caracter are pozitie variabila (pe 5 sau pe 4).

Am putea folosi functia Mid, pur si simplu si sa punem de mana argumentul "de unde sa inceapa extractia de date", insa la o baza de date cu zeci-sute-mii de inregistrari va fi extrem de dificil.

O varianta pe care am putea-o folosi este ca la argumentul "de unde sa inceapa extractia de date" sa punem functia find(), adica sa avem ceva de genul:
Mid( nr tel, find("/",nr tel, 1)+1, 7), adica "din fiecare numar de telefon extragem 7 carctere care se afla imediat dupa backslash".
Astfel, indiferent de pozitia pe care se afla "/" vom obtine rezultatul dorit.

Concatenate sau &
Aceasta functie este un fel de "adunare" a sirurilor de caractere. Este foarte utila atunci cand vrem sa combinam informatiile existente in mai multe celule.

Spre exemplu daca in A1 avem "Ionut" si in B1 "Popescu" functia Concatenate(A1,A2) va returna "IonutPopescu".
Daca vreau sa returneze "Ionut Popescu" va trebui sa scriu astfel Concatenate(A1, " ",A2).

Concatenate este un nume cam lung pentru o functie, dar avem si variata prescurtata: &
Exemplul de mai sus ar putea fi scris astfel: =A1&" "&A2


Note finale
Functiile de prelucrare a sirurilor de caractere nu fac parte din "meniul" meu zilnic de Excel insa sunt extrem de utile atunci am nevoie de o prelucrare a unor date mai "pretentioase". De fiecare data cand apelez la ele castig enorm de mult timp, timp pe care il pot folosi in analiza rezultatelor.

Aici gasiti un fisier cu un exemplu de utilizare a functiilor prezentate mai sus.

Pentru comentarii sau sugestii puteti folosi acest blog sau pagina noastra de Facebook.
Spor!

Un comentariu:

Trimiteți un comentariu