filtrare coloana alfabet non latin
filtrare coloana alfabet non latin
Salut, as avea nevoie de un macro astfel incat sa pot filtra automat intr-un fisier excel de n linii pe o anumita coloana toate inregistrarile care nu contin alfabet latin.
Multumesc,
Multumesc,
Re: filtrare coloana alfabet non latin
Buna ziua
Cred ca exista destul de multe neclaritati in enuntul problemei dvs. si lipsa unui fisier exemplu nu ajuta deloc.
La ce va ganditi cand spuneti "alfabet latin"? Pentru ca este sensul initial, restrans (de alfabet folosit in Roma antica, cu majuscule si fara semne de punctuatie reale) si altul, larg, care inseamna si minuscule, semne de punctuatie si diacritice specifice diverselor limbi europene. Si atunci alfabetul acesta devine sensibil mai extins (vedeti Alfabetul latin)
Si nu stiu sa existe vreun set de caractere disponibil in editorul macro care sa permita scrierea directa a tuturor acelor diacritice (adica poate se poate alege un font care stie diacritice frantuzesti dar acela sigur nu va sti (toate) cele romanesti si invers). De exemplu, fontul by default din editorul macro Excel, nu stie dintre diacriticile romanesti decat â si î.
Apoi, n acela (numarul de randuri al listei) poate deveni foarte important de stiut atunci cand am vorbi de un macro de filtrare directa pentru cazul in care se va folosi o filtrare in modul autofilter. Ori asta ar insemna ca macro sa faca testarile necesare si sa incarce intr-un array rezultatele dorite pentru a aplica apoi filtrarea doar pe anumite valori. Si daca rezultatul ar fi de ordinul miilor (ca sa nu spun zeci de mii) de elemente individuale filtrate ma indoiesc ca limitele interne si practice ale editorului macro ar permite asa ceva.
Astfel, eu as incerca sa merg pe o solutie bazata pe o coloana suplimentara unde sa existe o UDF care sa returneze "Da"/"Nu" si pe baza acelor rezultate sa se faca filtrarea dorita ulterior.
In fisierul atasat aveti un exemplu de UDF care poate functiona aplicat atat unei celule (vedeti de ex. in C2 si D2) cat si mai multora (vedeti de ex. E2)
Functia LatinChr va returna rezultatul "Da" pentru situatia in care toate caracterele testate in celula/celulele de referinta, se regasesc in stringul model* si "Nu" daca exista cel putin un caracter care nu se gaseste intre cele agreate.
*stringul model il gasiti definit in variabila refLatin. Daca veti incerca in editorul macro sa puneti si alte caractere si in locul lor veti vedea altceva, inseamna ca fontul nu perimite acele caractere si ne intoarcem la ceea ce am spus mai sus sau trebuie gasita o abordare total diferita fata de cea propusa de mine
Am folosit urmatorul cod
IP
Cred ca exista destul de multe neclaritati in enuntul problemei dvs. si lipsa unui fisier exemplu nu ajuta deloc.
La ce va ganditi cand spuneti "alfabet latin"? Pentru ca este sensul initial, restrans (de alfabet folosit in Roma antica, cu majuscule si fara semne de punctuatie reale) si altul, larg, care inseamna si minuscule, semne de punctuatie si diacritice specifice diverselor limbi europene. Si atunci alfabetul acesta devine sensibil mai extins (vedeti Alfabetul latin)
Si nu stiu sa existe vreun set de caractere disponibil in editorul macro care sa permita scrierea directa a tuturor acelor diacritice (adica poate se poate alege un font care stie diacritice frantuzesti dar acela sigur nu va sti (toate) cele romanesti si invers). De exemplu, fontul by default din editorul macro Excel, nu stie dintre diacriticile romanesti decat â si î.
Apoi, n acela (numarul de randuri al listei) poate deveni foarte important de stiut atunci cand am vorbi de un macro de filtrare directa pentru cazul in care se va folosi o filtrare in modul autofilter. Ori asta ar insemna ca macro sa faca testarile necesare si sa incarce intr-un array rezultatele dorite pentru a aplica apoi filtrarea doar pe anumite valori. Si daca rezultatul ar fi de ordinul miilor (ca sa nu spun zeci de mii) de elemente individuale filtrate ma indoiesc ca limitele interne si practice ale editorului macro ar permite asa ceva.
Astfel, eu as incerca sa merg pe o solutie bazata pe o coloana suplimentara unde sa existe o UDF care sa returneze "Da"/"Nu" si pe baza acelor rezultate sa se faca filtrarea dorita ulterior.
In fisierul atasat aveti un exemplu de UDF care poate functiona aplicat atat unei celule (vedeti de ex. in C2 si D2) cat si mai multora (vedeti de ex. E2)
Functia LatinChr va returna rezultatul "Da" pentru situatia in care toate caracterele testate in celula/celulele de referinta, se regasesc in stringul model* si "Nu" daca exista cel putin un caracter care nu se gaseste intre cele agreate.
*stringul model il gasiti definit in variabila refLatin. Daca veti incerca in editorul macro sa puneti si alte caractere si in locul lor veti vedea altceva, inseamna ca fontul nu perimite acele caractere si ne intoarcem la ceea ce am spus mai sus sau trebuie gasita o abordare total diferita fata de cea propusa de mine
Am folosit urmatorul cod
Cod: Selectaţi tot
Public Function LatinChr(myRng As Range)
'IPP - 26.11.2016
Dim c As Range
Dim refLatin As String
refLatin = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ÂÎ"
For Each c In myRng
For i = 1 To Len(c)
If InStr(refLatin, UCase(Mid(c, i, 1))) = 0 Then
LatinChr = "Nu"
Exit Function
End If
Next i
Next c
LatinChr = "Da"
End Function
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.