Novo

Forum kao aplikacija na telefonu

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

  • 6 odgovora
  • 5.115 pregleda

Najnovija ↓

IF ili VBA Preskakanje kopiranja praznih ćelija 24.09.2009. u 22:14 · pre 208 meseci #1
Pozdrav, imam jedan mali problemčić, a nisam za sada uspeo da nadjem neko valjano rešenje. Naime napravio sam makro koji mi kopira odredjene podatke iz jedne tabele u drugu i sve to lepo radi ali ima i viška koji mi smeta. Znači kopiram odredjeni Range, konkretno od a4:a20, ali mi nije uvek potrebno da kopiram sve ćelije jer nisu uvek sve popunjene. Kako da preskočim kopiranje praznih ćelija, tj. da mi u drugom Sheet-u budu podaci popunjeni redom bez praznih polja izmedju. Ono što sam za sada napravio izgleda ovako. Unapred hvala !!!

Code:
Sub unesi()

   Application.ScreenUpdating = False
   ActiveWorkbook.Sheets("podaci").Select
   
   Range("A3").Select
   Do
   If IsEmpty(ActiveCell) = False Then
       ActiveCell.Offset(1, 0).Select
   End If
   Loop Until IsEmpty(ActiveCell) = True
     
    
   Sheets("unos").Select
   Range("A4:A20").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 0).PasteSpecial (xlPasteValues)

   Sheets("unos").Select
   Range("B4:B20").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
   
   Sheets("unos").Select
   Range("B1").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)

   Sheets("unos").Select
   Range("B2").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
   
   Sheets("unos").Select
   Range("D2").Copy
   Sheets("podaci").Select
   ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)
   
      
   Sheets("unos").Select
   Application.CutCopyMode = False
   
End Sub
Re: IF ili VBA Preskakanje kopiranja praznih ćelija 25.09.2009. u 00:15 · pre 208 meseci #2
Nisam siguran da cu ti mnogo pomoci, ali evo predloga. Ja resvam problem kopiranja u prvi slobodan-prazan red tako sto dodam sledeci kod posle selektovanja sheeta u koji se kopiraju podaci:
r = Range("F9999").End(xlUp).Offset(1, 0).Row ' cuva se pocetni broj reda
ActiveSheet.Cells(r, 6).Select

To bi u tvom slucaju bilo otprolike ovako, za jedno kopiranje:

Sheets("unos").Select
Range("B1").Copy
Sheets("podaci").Select
r = Range("F9999").End(xlUp).Offset(1, 0).Row ' cuva se pocetni broj reda
ActiveSheet.Cells(r, 6).Select
ActiveCell.Offset(0, 1).PasteSpecial (xlPasteValues)

Ovo "F9999" znaci da hoces da kopiras podatak iz B1(unos) u prvi slobodan red kolone F(podaci), uz pretpostavku da imas ukupno 9999 redova. Ako imas vise, stavi taj broj, ali je maksimalno 65536.

Ovo "(r,6)" oznacava da je kolona F sesta po redu. Za G ces staviti-7, itd.

To kod mene radi odlicno, ali ne znam kako ces se snaci za kopiranje vise celija odjednom. Verovatno ovaj moj primer treba da se preradi. Pozdrav.
Re: IF ili VBA Preskakanje kopiranja praznih ćelija 25.09.2009. u 09:41 · pre 208 meseci #3
Pretpostavljam da kopiraš vrednosti (ne formule). U tom slučaju može se napraviti jednostavan kod koji jednostavno prepisuje ćeliju po ćeliju ukoliko nije prazna.
Code:
Sub CopyValuesWithoutBlank(rngSource As Range, clDest As Range)
' rngSource je kolona sa vrednostima koje se kopiraju
' Kopiraju se samo neprazne celije pocevsi od clDest
' P. Jovanovic za elitesecurity.org

Dim cl As Variant
For Each cl In rngSource
  If Len(cl.Text) > 0 Then        ' da li je blanko
     clDest.Value = cl.Value
   Set clDest = clDest.Offset(1)  ' sledeci red
  End If
Next cl
End Sub


Pozivane ove rutine npr:

Code:
Sub Test()
Dim Source As Range
Dim Dest As Range

  Set Source = ActiveSheet.Range("A1:A20")
  Set Dest = ActiveSheet.Range("F1")
  CopyValuesWithoutBlank Source, Dest
End Sub


Za velike opsege imalo bi smisla efikasnije rešenje koje bi radilo Copy sa kombinacijom opsega, ali je ono komplikovanije za realizaciju
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: IF ili VBA Preskakanje kopiranja praznih ćelija 25.09.2009. u 11:12 · pre 208 meseci #4
A mozda bi i dovoljno bilo da iskopirane podatke (sa sve praznim redovima) samo sortiras
cime ce prazni redovi doci na kraj pa ih mozes ignorisati. Naravno, u slucaju da time ne
narusavas strukturu ciljne tabele.

Pozdrav
Re: IF ili VBA Preskakanje kopiranja praznih ćelija 25.09.2009. u 11:31 · pre 208 meseci #5
Ako više odgovara rešenje pomoću formula, prostudiraj prikačeni fajl u ovom postu.

Možda jeste komplikovano ali može da bude trajno rešenje.

Za instant rešenje, lično, poslužio bih se Excelovim alatima.
Konkretno, Go To > Special > Blanks
i onda Delete Entire Row.
Potpis
Have you found helpful examples, solutions or ideas-in-work, please consider the
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
Re: IF ili VBA Preskakanje kopiranja praznih ćelija 25.09.2009. u 21:40 · pre 208 meseci #6
Hvala svima na savetima, pokušaću od svega po malo da isprobam, pa ću okačiti optimalno rešenje, da mogu i drugi da vide ako im bude nešto tako trebalo. Pozdrav
Re: IF ili VBA Preskakanje kopiranja praznih ćelija 27.09.2009. u 00:53 · pre 208 meseci #7
Evo ljudi napravio sam nešto što mi za sada radi posao. Pošto je kod dugačak, prikačiću dokument, pa možda nekome zatreba. Naime imam radnike koji mi rade povremeno i u različitom broju i ovo koristim za njihovu evidenciju. Ako neko zna prostije da napravi, naravno neću se ljutiti. Pozdrav
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme