sterge randuri in functie de o conditie

Indigo
Mesaje: 774
Membru din: Sâm Sep 26, 2009 8:05 pm

Re: sterge randuri in functie de o conditie

Mesaj de Indigo » Dum Iun 14, 2015 8:24 pm

@Jokerul

fara suparare, dar la 512 postari ar trebui sa stii macar cum sa formulezi ce doresti. Nu e prima oara cand ai cerut ceva, ti s-a oferit o solutie si apoi ai venit cu "dar nu functioneaza la mine..." ca mai am ceva...
Aici ai atasat un fisier si ai spus ca vrei sa stergi randurile goale dar nu ai spus (si nici in fisier nu erau formule) ca acolo vor fi celule "goale" ca rezultat al unor formule.
Codul de mai sus l-am folosit pe celule care contin formule si nu a dat randament
Codul a fost scris, strict la ce ai cerut/specificat.

Jokerul
Mesaje: 545
Membru din: Vin Iul 03, 2009 11:06 pm

Re: sterge randuri in functie de o conditie

Mesaj de Jokerul » Dum Iun 14, 2015 8:56 pm

Indigo, cu siguranta ai dreptate, este vina mea ca nu iau in considerare toate variantele, nu m-am gandit nicio clipa ca o celula care nu afiseaza nimic se diferenteaza in cazul de fata cu o celula care contine o formula care returneaza "". Data viitore voi sti sa expun problema corect.

Intentia mea nu a fost de a spune ca acel cod prezentat este gresit sau ca nu isi face treaba, acum stiu de el si il voi folosi cu mare placere acolo unde va fi momentul pentru ca este o varianta foarte simpla si usoara. Dupa ce l-am testat mi-am dat seama ca nu am expus problema in toate formele ei, de accea am avut si o ezitare in a da un raspuns imediat. Ca sa nu supar, puteam sa spun ca totu-i roz si totul era bine, dar prefer sa imi asum problemele create.
Indigo, te rog sa ma scuzi pentru neplacerea creata si iti multumesc pentru fiecare ajutor oferit nu numai pentru cel de ieri, ci si pentru cele oferite in tot timpul de cand sunt pe forum.
Tocmai cand credeam si eu ca o scot la capat,
se gasi unul sa mute capatul mai incolo ...

Indigo
Mesaje: 774
Membru din: Sâm Sep 26, 2009 8:05 pm

Re: sterge randuri in functie de o conditie

Mesaj de Indigo » Dum Iun 14, 2015 10:35 pm

Codurile urmatoare functioneaza si cu randuri goale provenite din formule.

Cod: Selectaţi tot

Sub StergeRandGol()
r = Cells(Rows.Count, "C").End(xlUp).Row
With Sheet1.Range("C4:C" & r)
    .Value = .Value
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
sau daca este un range limitat, atunci:

Cod: Selectaţi tot

Sub StergeRandGol_2()
With Sheet1.Range("C4:C25")
    .Value = .Value
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub

Jokerul
Mesaje: 545
Membru din: Vin Iul 03, 2009 11:06 pm

Re: sterge randuri in functie de o conditie

Mesaj de Jokerul » Mar Iun 23, 2015 7:55 am

Indigo, multumesc foarte mult. Am folosit codul de mai jos si functioneaza mult mai rapid decat codul precedent.

Cod: Selectaţi tot

Sub StergeRandGol_2()
With Sheet1.Range("C4:C25")
    .Value = .Value
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
Tocmai cand credeam si eu ca o scot la capat,
se gasi unul sa mute capatul mai incolo ...

Radu Sirbu
Mesaje: 1
Membru din: Dum Dec 17, 2017 1:18 pm

Re: sterge randuri in functie de o conditie

Mesaj de Radu Sirbu » Lun Feb 26, 2018 10:11 pm

Salutare,

Tot la acest topic (" sterge randuri in functie de o conditie"), va rog sa ma ajutati cu un cod pentru situatia cand vrei sa stergi toate randurile care au pe coloana A ( de exemplu) una din valorile unei multimi (ex, "3", "4", "5").

Atunci cand e vorba doar de o valoare si nu o multime, am codul, dar nu imi dau seama cum sa inserez conditia cu mai multe valori dintr-o multime.

Am incercat sa adaug o variabila x= array ("3","4","5"), cu care sa fie comparata valoarea celulei in cauza de pe coloana A, dar nu stiu cum sa le leg.

multumesc anticipat,

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: sterge randuri in functie de o conditie

Mesaj de TudyBTH » Mar Feb 27, 2018 11:34 am

Buna,

Aveti mai jos un cod care:
- presupune cunoasterea coloanei pe care se face cautarea (col "A"), prima linie cu date(firstRow = 2), numele foii in care sunt datele (wsName "Sheet1") si valorile cautate in coloana 'col' introduse intr-un string, separate de un caracter care nu apare in componenta valorilor din coloana (in cod s-a folosit "_")
- verifica daca valorile din coloana 'col' exista in string-ul presetat si daca da sterge intreaga linie

Cod: Selectaţi tot

Sub StergeLinii()
    
    '----------------------------------
    Const sCol As String = "A"
    Const firstRow As Long = 2
    Const wsName As String = "Sheet1"
    Const crit As String = "_1_3_"
    '----------------------------------
    
    Dim r As Range
    Dim i As Long, lastRow As Long
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Sheets(wsName)
    lastRow = ws.Range(sCol & ws.Rows.Count).End(xlUp).Row
    For i = lastRow To firstRow Step -1
        Set r = ws.Cells(i, sCol)
        If InStr(1, crit, "_" & r.Value & "_") > 0 Then r.EntireRow.Delete
    Next i
    
End Sub
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”