Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Selektovanje i kopiranje od prve do zadnje popunjene celije uz....

  • 8 odgovora
  • 2.409 pregleda

Najnovija ↓

Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 04.10.2018. u 13:41 · pre 98 meseci #1
Pozdrav narode!

Imam problem sa selektovanjem i kopiranjem opsega. u koloni A su podaci koje treba selektovati pa potom kopirati od prve pa sve do zadnje popunjene celije s tim što u tom opsegu ima i praznih celija koje i treba da budu prazne i kao takve da se selektuju i kopiraju.
Nasao sam makro

Code:
 Sub KOPIRANJE()

        

    Dim LastRow         As Long
    Dim i               As Long
    Dim Range           As Range
        
    With Sheets("OSNOVA").Activate
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        
            Range("A1:A" & LastRow).Select
            
                Selection.Copy

    End With
End Sub


ali ima debug koji nisam u stanju da otklonim.
Znaci kao da sam odradio SELECT - COPY, a potom peske treba da idem gde mi treba da odradim CTRL+V
Znali neko kako ovo da odradim.
Hvala unapred
Potpis
sve ce ovo jednom proci
Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 04.10.2018. u 14:51 · pre 98 meseci #2
Recimo
Code:
Sub KOPIRANJE()
    
    Dim LastRow         As Long
    Dim i               As Long        
    With Sheets("OSNOVA").Activate
        LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row        
            Range("A1:A" & LastRow).Select            
                Selection.Copy
    End With
End Sub

Ne treba definisati Range jer je već definisan i malo sam izmenio kako se nalazi zadnja popunjena ćelija.
Ko zna više može dalje optimizovati kod.
Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 04.10.2018. u 15:11 · pre 98 meseci #3
Ako je naziv "OSNOVA" sheet-a odakle se kopira onda je dati kod uredu a ako nije i ako je kao u prilozenom Excel file-u onda treba da ide "Sheet1" umesto "OSNOVA"

Ako nije potrebno da se prvo odabere i aktivira odredjeni sheet kao sto je vec dato u kodu, vec da se koristi trenutni, onda treba ukloniti deo kod koji se na to odnosi.


Dati kod samo vrsi f-ju COPY cele kolone A u clipboard ali ne i f-ju PASTE

U prilogu Excel file sa obe varijante koda u VBA. Takodje je promenjen namerno donji redosled sheet-ova i 'sheet1' je stavljen na poslednje mesto a 'sheet2' na prvo.

Iz Excel file kod - nekoliko nacina...

Code:


Sub KopirajV1()

    Dim LastRow As Long

    Sheets("Sheet1").Activate
    LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
    Range("A1:A" & LastRow).Copy
    'Selection.Copy
    
End Sub


Sub KopirajV2()

    Dim LastRow As Long

    LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
    Range("A1:A" & LastRow).Copy
    'Selection.Copy

End Sub


Sub KopirajV3()

    Dim LastRow As Long

    With Sheets("Sheet1")
        .Activate
        LastRow = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
        .Range("A1:A" & LastRow).Copy
    End With
    
End Sub


Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 05.10.2018. u 12:29 · pre 98 meseci #4
hvala Vam Nenade naravno i tebi Boki

ovo radi radnju kada su u pitanju popunjene celije odnosno zaboravio sam da kazem da su na originalnom fajlu ispinjene celije u koloni A od 1 do 12000 formulama.
e sad formulama je uslovljeno da ako nema rezultata da je celija blanko, medjutim u njoj postoji formula, zato ovi makroji racunaju da su to popunjene celije od 1 do 12000 a treba recimo od 1 do 550
Potpis
sve ce ovo jednom proci
Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 05.10.2018. u 14:39 · pre 98 meseci #5
pa da dobro ono sto se zaboravi to onda nije napisano i receno te tako ako nije problem da se onda opet definise sa vase strane sta se hoce?

takodje, recimo od 1 do 550 znaci da moze da bude i 0 i 1 ali i recimo 1 do 250 ili opet recimo 1 do 1500 :)

Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 06.10.2018. u 21:13 · pre 98 meseci #6
evo konkretnog primera odnosno na cemu radim da bi bolje razumeli problematiku.
U svemu ovome sve se vrti oko kolone V. zadnji ispisani rezultat je u celiji V2325. a makro koji ste postavili kopira celije sve do V12000.
Kao sto sam prethodno rekao postoje formule u celije od V8 pa sve do V12000. kada kopiram preko makroa i idem da kopiram na promer u NOTEPAD-u on iskopira praznih oko 9000 praznih redova.
dali sada razumete
Potpis
sve ce ovo jednom proci
Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 06.10.2018. u 22:11 · pre 98 meseci #7
Na osnovu vaseg priloga i ako sam lepo prebrojao kolone onda bi to nesto bilo ovako...

Code:


Sub MakeCopy4Me()

    Dim iTotalRows As Long
    Dim iRow As Long
    Dim i As Long

    ' Get total number of rows in sheet
    iTotalRows = ActiveSheet.UsedRange.Columns(22).Rows.Count

    ' Go from last row till first row from back which has data in cell
    For i = iTotalRows To 1 Step -1
    
        If Cells(i, 22).Value <> "" Then
            
            iRow = i
            Exit For

        End If
        
    Next
    
    ' Make a copy of range
    ActiveSheet.Range("V1:V" & iRow).Copy

End Sub

Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 06.10.2018. u 22:25 · pre 98 meseci #8
to je to Boki. hvala ti neizmerno

ako nije problem moze li povise ili u nastavku svakog reda koda da napises sta tacno koja komada radi, cisto da bi razumeli kod.
laik sam za ovo zato mi dosta znaci a nadam se i ostalima da znam eto da bih mozda mogao i u neke druge svrhe da se ovaj kod iskoristi.

jos jednom najlepse hvala Boki
Potpis
sve ce ovo jednom proci
Re: Selektovanje i kopiranje od prve do zadnje popunjene celije uz.... 07.10.2018. u 00:28 · pre 98 meseci #9

Ajd da probamo ovako...

Code:


Sub MakeCopy4Me()

    ' Deklarisanje (definisanje) naziva i
    ' vrste za svaku promenljivu koja se koristi u ovom delu koda
    ' Sve tri su tipa Long - dugacki broj
    Dim iTotalRows As Long
    Dim iRow As Long
    Dim i As Long

    ' U promenljivu 'iTotalRows' se smesta vrednost
    ' koja predstavlja ukupan broj zauzetih redova za kolonu 22
    iTotalRows = ActiveSheet.UsedRange.Columns(22).Rows.Count

    ' Petlja koja ide od
    ' ukupnog broja zauzetih redova definisanih u 'iTotalRows' promenljivi do prvog reda (radi se u kontra smeru od najveceg ka najmanjem; zato se u delu FOR, za korak 'Step' koristi -1)
    ' (Petlja je deo koda koji se ponavlja odredjeni broj puta i koji pocinje sa FOR a zavrsava sa NEXT)
    For i = iTotalRows To 1 Step -1
    
        ' IF Uslov koji proverava ako postoji vrednost u trenutnoj celiji koja nije prazna vrednost onda
        ' (Cells(Row,Col) - gde je 'i' promenljiva vrednost za 'Row' a '22' je broj kolone)
        If Cells(i, 22).Value <> "" Then
            
            ' Azuriraj vrednost iRow posto smo dobili osnovni uslov i nasli prvu vrednost za celiju (polje) koja ima vrednost
            iRow = i
            
            ' Izadji iz petlje posto nema vise potrebe da proveravamo osnovni uslov
            Exit For

        End If
        
    Next
    
    ' Selektuj kolonu V gde je su vrednosti u opsegu od pocetka pa sve do
    ' iRow vrednosti tj. poslednje (prve od pozadi) celije koja ima vrednost i kopiraj u bafer tj. clipboard
    ActiveSheet.Range("V1:V" & iRow).Copy

End Sub



Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme