Cum elimini toate literele dintr-un sir mixt, in Excel – varianta cu VBA


Iti spuneam intr-un articol anterior despre o provocare pe care am primit-o legata de separarea cifrelor si literelor dintr-un sir mixt.

Elimina literele dintr-un sir mixt 0

Solutia data de mine era una care folosea functii. In urma acelui articol, apropo, ma bucur ca citeste cineva ce scriu 🙂 am primit pe email de la Csaba cu o solutie in VBA.

Cine e Csaba?

Poate il mai tii minte pe Csaba, ne-a facut un model de dispozitie de plata in Excel.



Solutie folosind VBA

A facut el ce a facut si a rezolvat problema folosind VBA. (VBA = Visual Basic for Applications, adica programare in Excel).

Solutie folosind VBA

Cum functioneaza

Scrii pe coloana A sirul de caractere mixt, litere si cifre, pe coloana B apar literele, pe coloana C apar cifrele, asta dupa ce apesi butonul separare.

Cum arata codul

Uite asa arata codul, parca incep si eu parca sa imi aduc aminte de informatica din liceu si facultate.

Sub separare()
Dim i As Integer, ii As Integer, n As Integer
Dim nuMar As String, liTere As String, a As String
i = 1: Do While Cells(i, 1) <> ""
n = Len(Cells(i, 1)): nuMar = "": liTere = ""
For ii = 1 To n
a = Mid(Cells(i, 1), ii, 1):
If IsNumeric(a) = True Then
nuMar = nuMar & a
Else: liTere = liTere & a
End If
Next
Cells(i, 2) = liTere: Cells(i, 3) = nuMar
i = i + 1: Loop
End Sub

Cateva explicatii

De la Csaba citire:

  • Ciclul Do While … i=i+1:Loop asigura oprirea la primul rand gol, prin conditia Cells(i, 1) <> “”.
  • Cu functia Len aflu numarul de caractere din mix.
  • Cu ajutorul ciclului For ii=1…Next asigur testarea tuturor caracterelor cu ajutorul functiei Mid (separare in caractere) si IsNumeric (testare numar sau nu).
  • In functie de rezultatul testarii adaug la liTere sa la nuMar si in final le scriu in coloana A sau B.

Download

Aici poti descarca fisierul pe care l-am primit si eu. Ca sa functioneze trebuie sa dai enable macros ca sa functioneze.

Acest articol e un exemplu bun al faptului ca desi eu scriu pe acest site, sunt persoane de la care pot invata multe lucruri. Nu stiu sa folosesc VBA, poate doar sa modific un script scris de altcineva, mersi Csaba.

Daca acest articol te-a inspirat sa imi scrii ca sa le arati si altora o chestie interesanta pe care o poti face in Excel, te rog sa imi scrii si poate “urcam” un articol pe site.