Odgovori 
Zbir faktura prema imenu firmi i vremenskom opsegu

Poštovani,
u Calc-u imam list BAZA. U njemu je kolona C sa datumima faktura, kolona G sa imenima firmi od kojih se dobijaju te fakture, i kolona I sa iznosom fakture.
Hteo bih u listu ANALITIKA da napravim formulu koja bi mi na osnovu imena firmi, početnog i krajnjeg datuma, davala zbirni iznos faktura.
Krenuo sam sa SUMPRODUCT ali sam stao... ne dobijam ono što bih želeo... pa mi treba pomoć...

Apache OpenOffice 4.0.1 Win
Citiraj ovu poruku u odgovoru

Evo rešenja, možda nekom posluzi.

Prilozi uz poruku .ods  sumproduct.ods (Veličina: 11.8 kb)

Apache OpenOffice 4.0.1 Win
Citiraj ovu poruku u odgovoru

Funkcija SUMPRODUCT se koristi kada u redu imamu količinu i jediničnu cenu, pa treba sabrati za svaki red cena puta količina, bez da pravimo novu pomoćnu kolonu sa ukupnom cenom.

U primeru iz ove poruke mogla bi da se koristi funkcija SUMIFS. Opseg za zbir je kolona B (iznos), a imamo tri uslova. Prvi uslov je naziv firme (opseg je kolona A, tražena vrednost B14). Drugi uslov je donja granica datuma, a treći gornja granica datuma. Opseg za oba uslova je kolona C.

=SUMIFS(
    B2:B7 ; 
    A2:A7 ; B14 ; 
    C2:C7 ; ">="&B12 ; 
    C2:C7 ; "<="&B13
)


Prilozi uz poruku .ods  sumproduct.ods (Veličina: 15.87 kb)
Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru

Hvala na primeru. Jedino što mi nije baš najajsnije je sintaksa. Primenio sam na moj Calc dokument, radi kao i Sumproduct, ali, kao što rekoh, malo mi je nejasna sintaksa.
Inače, postoji još jedan problem. Datume kreira kod koji sa dijaloga, iz polja za datume, prebacuje datum u ćeliju. Na kraju se dobija ćelija sa datumom ali i sa nevidljivim zarezom ispred. U ovom slučaju formula sumproduct ne funkcioniše, jer ne prepoznaje datum. Ako kolonu formatiram kao tekst, onda nema tog zareza, ali formula sumproduct opet ne prepoznaje datume! Tek nakon ručnog brisanja zareza (prethodno je cela kolona formatirana kao Datum), formula je profunkcionisala. Da li postoji rešenje, da kod koji prebacuje datum uradi tako da nema ovih problema?

Apache OpenOffice 4.0.1 Win
Citiraj ovu poruku u odgovoru

Dim datum as Date
Dim cell as Object
 
datum = DateValue("2015-02-25")
cell = ThisComponent.Sheets(0).getCellByPosition(0, 0)
cell.String = datum


Sintaksa SUMIFS funkcije je:

=SUMIFS(
    opseg vrednosti koje ulaze u zbir samo ako su ispunjeni svi uslovi ;
    opseg za prvi uslov ; prvi uslov ;
    opseg za drugi uslov ; drugi uslov ;
    ...
)


U navedenom primeru želimo da saberemo iznose samo ako u tom istom redu ime ima vrednost ćelije B14 (prvi uslov), datum je veći ili jednak B12 (drugi uslov) i datum je manji ili jednak B13 (treći uslov).
Poseti veb stranicu korisnika
Citiraj ovu poruku u odgovoru

Sa kodom koji ste postovali ne dobijam željeni rezultat. I dalje imam apostrof ispred datuma. Rešenje koje mi radi posao jeste sledeće, dobijeno na drugom forumu:
Kod:
Sub CopyDate
   Dim oSheet : oSheet = ThisComponent.Sheets.getByIndex(0)
   Dim oCell : oCell = oSheet.getCellByPosition(2,4)     'Column index 2 is column C, and row index 4 is row 5 (A1 is 0,0)
   Dim d As Date : d = oCell.getValue()
   oCell = oSheet.getCellByPosition(1,3)
   oCell.setValue(d)
End Sub
Jedino što ćelija u kojoj se pastuje datum mora prethodno biti formatirana kao datum.

Eto sada drugog problema. Ako iz dijaloga, na kome se nalazi Datefield, kopiram datum i pastujem ga u ćeliju, javlja mi se nevidljivi apostrof! Kojim sada postupcima da kopiram datum i pastujem ga u ćeliju (koja mora biti formatirana kao Datum) pa da se izbegne taj nepoželjni apostrof?

Apache OpenOffice 4.0.1 Win
Citiraj ovu poruku u odgovoru

Zahvaljujući B Marcelly, evo njegovog koda i način kako kako da se prebaci datum iz Polja za datum (Datefield) u ćeliju da na ne bude nevidiljivog apostrofa (ćelija prethodno mora biti formatirana kao Datum (Format/Ćelije/jezičak Brojevi: Kategorija)):
Kod:
DialogLibraries.loadLibrary("Library1")
dlg = createUnoDialog(DialogLibraries.Library1.Dialog1)
dlg.execute()
ctrl = dlg.getControl("DateField1")
sh = ThisComponent.Sheets.getByIndex(0)
c = sh.getCellByPosition(0,0)
if ctrl.isEmpty  then
  c.String = "" ' clear cell
else
  d = ctrl.Date
  if isUnoStruct(d) then
    REM LibreOffice
   c.Value = CDateFromUnoDate(d)
  else
    REM OpenOffice
   c.Value = CDateFromISO(d)  
  endif
end if


Apache OpenOffice 4.0.1 Win
Citiraj ovu poruku u odgovoru
Odgovori 




Kontakt | otvorenidokument.com | Povratak na vrh | Povratak na sadržaj | RSS