Da li je izvodljivo ovo što želim da dobijem pomoću neke naredbe, preko makroa ili kako već. Primjer dajem u prilogu kako bih ja da mi to igzleda. u listu KART preuzima podatke iz lista KN i klikom na naredbu FILTER daje podatke kako želim da mi filtrira. Kriterijumi koje izaberem su u poljima B7, B8, B9 i B10. ako je u polju B8 PP neki sa liste onda daje njegovu karticu a ako piše SALDO onda daje njihov saldo sabirajući sve sa dugovne i potražne strane i daje njihov saldo. Da li se ovo može pomoću ednog makroao ili mora više njih i kako? Bio bih zahvalan ako može neko ovo da odradi.
Prikaz kartica u Excelu
Zaključano
Zakačeno
Mislim da bi se ovo moglo odradit uz pomoć tri makroa ono što bi meni trebalo. E, tu je sad problem, jer ih ja ne umijem odradit. Eto u prilogu je onako kako mislim da bi moglo da se postavi, al ako ima neko dobre volje da pomogne bio bih zahvalan.
Neće ti baš puno pomoći ali eto pokušaj je pokušaj, nisam programer ali evo ti primjer kao vodič u smjeru rješavanja. Postoji mogućnost rješenja formulama pa filtriranjem.
U prilogu datoteka koja sadrži formule a formule možeš ugraditi u VBA macro. Jedino još bi trebalo postaviti uvjet između dva datuma.
Ako radiš direktno sa formulama tada postoji mogućnost usporavanja Excela ako imaš puno redova podataka.
U ćeliji A13, ovo je ARRAY ili "CSE formula" koju završavaš sa Ctrl+Shift+Enter (ne samo enter)
Formula reagira na uvjete SALDO ili naziv iz PP u ćeliji B8.
Ovo je VBA macro u Module1
Nije do kraja završen jer nema uvjete datuma od-do filtriranja. Možda bi ga netko mogao doraditi.
pozdrav
U prilogu datoteka koja sadrži formule a formule možeš ugraditi u VBA macro. Jedino još bi trebalo postaviti uvjet između dva datuma.
Ako radiš direktno sa formulama tada postoji mogućnost usporavanja Excela ako imaš puno redova podataka.
U ćeliji A13, ovo je ARRAY ili "CSE formula" koju završavaš sa Ctrl+Shift+Enter (ne samo enter)
Formula reagira na uvjete SALDO ili naziv iz PP u ćeliji B8.
Code:
=IF($B$8="SALDO";IF($C$7>=ROWS(A$13:A13);INDEX(KN!A:A;SMALL(IF(KN!$E$2:$E$1000=$B$7;ROW(KN!$A$2:$A$1000));
ROWS(A$13:A13)));"");IF($C$8>=ROWS(A$13:A13);INDEX(KN!A:A;SMALL(IF(KN!$G$2:$G$1000=$B$8;ROW(KN!$A$2:$A$1000));
ROWS(A$13:A13)));""))
=IF($B$8="SALDO";IF($C$7>=ROWS(A$13:A13);INDEX(KN!A:A;SMALL(IF(KN!$E$2:$E$1000=$B$7;ROW(KN!$A$2:$A$1000));
ROWS(A$13:A13)));"");IF($C$8>=ROWS(A$13:A13);INDEX(KN!A:A;SMALL(IF(KN!$G$2:$G$1000=$B$8;ROW(KN!$A$2:$A$1000));
ROWS(A$13:A13)));""))
Ovo je VBA macro u Module1
Code:
Sub Macro1()
Range("A13:J100").Select
Selection.ClearContents
Range("A13").Select
Selection.FormulaArray = _
"=IF(R8C2=""SALDO"",IF(R7C3>=ROWS(R13C:RC),INDEX(KN!C,SMALL(IF(KN!R2C5:R1000C5=R7C2,ROW(KN!R2C1:R1000C1)),ROWS(R13C:RC))),""""),IF(R8C3>=ROWS(R13C:RC),INDEX(KN!C,SMALL(IF(KN!R2C7:R1000C7=R8C2,ROW(KN!R2C1:R1000C1)),ROWS(R13C:RC))),""""))"
Selection.AutoFill Destination:=Range("A13:J13"), Type:=xlFillDefault
Range("A13:J13").Select
Range("B13:C13").Select
Selection.NumberFormat = "m/d/yyyy"
Range("A13:J13").Select
Selection.AutoFill Destination:=Range("A13:J100"), Type:=xlFillDefault
Range("A13:J1000").Select
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("H13:J100").Select
Selection.NumberFormat = "#,##0.00"
Range("A13").Select
End Sub
Sub Macro1()
Range("A13:J100").Select
Selection.ClearContents
Range("A13").Select
Selection.FormulaArray = _
"=IF(R8C2=""SALDO"",IF(R7C3>=ROWS(R13C:RC),INDEX(KN!C,SMALL(IF(KN!R2C5:R1000C5=R7C2,ROW(KN!R2C1:R1000C1)),ROWS(R13C:RC))),""""),IF(R8C3>=ROWS(R13C:RC),INDEX(KN!C,SMALL(IF(KN!R2C7:R1000C7=R8C2,ROW(KN!R2C1:R1000C1)),ROWS(R13C:RC))),""""))"
Selection.AutoFill Destination:=Range("A13:J13"), Type:=xlFillDefault
Range("A13:J13").Select
Range("B13:C13").Select
Selection.NumberFormat = "m/d/yyyy"
Range("A13:J13").Select
Selection.AutoFill Destination:=Range("A13:J100"), Type:=xlFillDefault
Range("A13:J1000").Select
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("H13:J100").Select
Selection.NumberFormat = "#,##0.00"
Range("A13").Select
End Sub
Nije do kraja završen jer nema uvjete datuma od-do filtriranja. Možda bi ga netko mogao doraditi.
pozdrav
Evo ti još jedan primjer 
btw: sigurno postoji jednostavniji VBA kod ali dok ga ne nađeš možda ti ovo može poslužiti
btw: sigurno postoji jednostavniji VBA kod ali dok ga ne nađeš možda ti ovo može poslužiti
@Pupazzo
tabele su ti pogresno kreirane, zbog toga je tesko uspostaviti veze izmedju tabela na nacin kako si ti zamislio.
Prvo treba kreirati nove tabele, treba napisati nekoliko makroa: za unos podataka, za filter listanje i za pravljenje izvestaja (eventualno printanje i slanje mailom).
razumem sta ti treba, samo si pogresno poceo, takodje ima gresku kako u funkcionalnom tako i u konceptualnom smislu, mesas analitiku i sintetiku (barem je tako ispada iz fajla koji si prikacio)
tabele su ti pogresno kreirane, zbog toga je tesko uspostaviti veze izmedju tabela na nacin kako si ti zamislio.
Prvo treba kreirati nove tabele, treba napisati nekoliko makroa: za unos podataka, za filter listanje i za pravljenje izvestaja (eventualno printanje i slanje mailom).
razumem sta ti treba, samo si pogresno poceo, takodje ima gresku kako u funkcionalnom tako i u konceptualnom smislu, mesas analitiku i sintetiku (barem je tako ispada iz fajla koji si prikacio)
Nešto sam radio al nije u redu ovaj makro KARTICA. Kada otvorite vidjećete da nešto nisam odradio kako treba da daje karticu posebno. To jedna stvar, i druga stvar je da je nešto previše usporen cijeli fajl. Zbog čega je to?
Sub Filter_Kartica()
Application.ScreenUpdating = False
wsPRIN.Range("A2:G1000").ClearContents
Dim kupac As String, brn As Integer
kupac = wsKART.Range("N1").Value
brn = wsKART.Range("K1").Value
wsKART.Activate
Range("G1:G" & brn).AutoFilter Field:=1, Criteria1:=kupac
Range("A1", Range("G" & brn).End(xlDown)).Copy
wsPRIN.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.AutoFilter
Range("A1").Select
wsPRIN.Activate
Dim xy As Long
xy = wsPRIN.Range("K1").Value
Range("D" & xy + 4).Value = "---------------------"
Range("D" & xy + 5).Value = "SVEGA :"
Range("E" & xy + 4).Value = "-------------------"
Range("E" & xy + 5).Value = Range("I1").Value
Range("F" & xy + 4).Value = "-------------------"
Range("F" & xy + 5).Value = Range("J1").Value
Range("G" & xy + 4).Value = "-------------------"
Range("G" & xy + 5).Value = Range("E" & xy + 5) - Range("F" & xy + 5)
Range("A1").Select
wsPRIN.PageSetup.LeftHeader = "EEEE doo ANALITICKA KARTICA KUPCA --- " & kupac
End Sub
Sub Filter_Kartica()
Application.ScreenUpdating = False
wsPRIN.Range("A2:G1000").ClearContents
Dim kupac As String, brn As Integer
kupac = wsKART.Range("N1").Value
brn = wsKART.Range("K1").Value
wsKART.Activate
Range("G1:G" & brn).AutoFilter Field:=1, Criteria1:=kupac
Range("A1", Range("G" & brn).End(xlDown)).Copy
wsPRIN.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.AutoFilter
Range("A1").Select
wsPRIN.Activate
Dim xy As Long
xy = wsPRIN.Range("K1").Value
Range("D" & xy + 4).Value = "---------------------"
Range("D" & xy + 5).Value = "SVEGA :"
Range("E" & xy + 4).Value = "-------------------"
Range("E" & xy + 5).Value = Range("I1").Value
Range("F" & xy + 4).Value = "-------------------"
Range("F" & xy + 5).Value = Range("J1").Value
Range("G" & xy + 4).Value = "-------------------"
Range("G" & xy + 5).Value = Range("E" & xy + 5) - Range("F" & xy + 5)
Range("A1").Select
wsPRIN.PageSetup.LeftHeader = "EEEE doo ANALITICKA KARTICA KUPCA --- " & kupac
End Sub