Nastavljajući dalje primetio sam da ti ni brojne vrednosti u kolni I nisu ispravene - unesene su kao tekst (zarez umesto decimalne tačke), pa i to treba srediti sa Replace. Nakon toga kod za prepisivanje jednog reda možeš da koristiš sledeći kod:
Code:
Sub PrepisiRed(shSource As Worksheet, rwSource As Long, shDest As Worksheet, rwDest As Long)
' Prepisuje jedan red sa jednog lista na drugi prema zadatim pravilima
' zavisno da li se radi o ulazu ili izlazu
'
' P.Jovanovic za elitesecurity.org 31/1/2007
'
'Prepisi broj i naziv
shDest.Cells(rwDest, 1).Value = shSource.Cells(rwSource, 2).Text
shDest.Cells(rwDest, 2).Value = shSource.Cells(rwSource, 3).Value
If shSource.Cells(rwSource, 1).Text = "96 Ulaz" Then
'Formiraj ulaz
shDest.Cells(rwDest, 3).Value = shSource.Cells(rwSource, 5).Value
shDest.Cells(rwDest, 4).Value = shSource.Cells(rwSource, 4).Value _
+ shSource.Cells(rwSource, 9).Value
Else ' 92 Izlaz
'Formiraj izlaz
shDest.Cells(rwDest, 5).Value = shSource.Cells(rwSource, 5).Value
shDest.Cells(rwDest, 6).Value = shSource.Cells(rwSource, 8).Value
shDest.Cells(rwDest, 7).Value = shSource.Cells(rwSource, 9).Value
shDest.Cells(rwDest, 8).Value = shSource.Cells(rwSource, 6).Value
shDest.Cells(rwDest, 9).Value = shSource.Cells(rwSource, 7).Value
End If
End Sub
Sad se može ovo prethodno iskoristiti za prepisivanje red po red nakon što se postavi filter. Kako sam ja shvatio može da bude samo jedan ili nijedan red za ulaz i jedan ili nijedan red za izlaz u filtriranoj listi za isti artikal i ti redovi se prepisuju u isti red Tabele.
Code:
Sub Prepis()
' Glavni program koji postavlja filter i poziva prepisivanje redova
' za sve redove koji zadovoljavaju kriterijum
'
' Na kraju se iskljucuje filter
'
Dim shP As Worksheet
Dim rwKraj As Long
Dim r As Long
Dim rDest As Long
Dim prethodni As Variant
PostaviFilter "12/31/2006"
Set shP = Sheets("Popis")
rDest = 2 ' Pocetni red u tabeli -1
rwKraj = shP.Range("A65534").End(xlUp).Row ' Krajnji red popisa
For r = 2 To rwKraj
If shP.Rows(r).Hidden Then GoTo Sledeci ' Preskoci skrivene redove
If shP.Cells(r, 2).Value <> prethodni Then ' Da li je artikal razlicit od prethodnog
prethodni = shP.Cells(r, 2).Value
rDest = rDest + 1
End If
PrepisiRed shP, r, Sheets("Tabela"), rDest
Sledeci:
Next r
'Iskljuci filter
shP.AutoFilterMode = False
End Sub
Ako je ovo to što ti treba naknadno treba dodati formatiranja Tabele
Nije to loše Rembrante, samo što ne bi dodao još malo boje?