Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Excel] problem sa sumproduct

[es] :: Office :: Excel :: [Excel] problem sa sumproduct

[ Pregleda: 2023 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anakin14

Član broj: 73683
Poruke: 862
79.101.151.*



+133 Profil

icon [Excel] problem sa sumproduct19.03.2008. u 10:04 - pre 175 meseci
Imam problem sa sumproduct u vezi datuma ponovo!

Znaci SUMPRODUCT((a1:a10=3/18/2008).... ovo ne radi
a u poljima a1:a10 je 3/18/2008 formatiran u 18-mar , ali kada upisem broj datuma
SUMPRODUCT((a1:a10=39525).... ili referencu
SUMPRODUCT((a1:a10=a10)....
onda radi???
U cemu je problem>
Pozdrav i hvala!

 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2231
212.200.27.*

Sajt: www.gowi.rs


+103 Profil

icon Re: [Excel] problem sa sumproduct19.03.2008. u 15:52 - pre 175 meseci
Probaj DATEVALUE("3/18/2008") umesto 3/18/2008. Obrati pažnju na regionalna setovanja - kod mene mora prvo mesec pa dan. Još sigurnije je DATE(2008,3,18).

Da dopunim sa objašnjenjem. Izraz 3/18/2009 unutar formule tumači se kao aritmetički izraz 3 podeljeno sa 18 podeljeno sa 2009. U ovo se možeš uveriti korišćenjem alata Evaluate Formula iz Formula Auditing sekcije kartice Formula u Officu 2007, odnosno Formula Auditing toolbara u prethodnim verzijama. Da bi dobio datum u formuli možeš koristiti neku od navednih funkcija.

[Ovu poruku je menjao Jpeca dana 20.03.2008. u 09:34 GMT+1]
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
79.101.151.*



+133 Profil

icon Re: [Excel] problem sa sumproduct20.03.2008. u 08:53 - pre 175 meseci
znaci nece, radi samo na onaj broj datuma - da li postoji funkcija koja datum u formatu 3/19/2008 prebacuje u broj?
Puno hvala!
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2231
212.200.27.*

Sajt: www.gowi.rs


+103 Profil

icon Re: [Excel] problem sa sumproduct20.03.2008. u 09:21 - pre 175 meseci
Kako misliš neće? Svaki datum Excel tumači kao broj dana koji je protekao od 1-1-1900. Tako je DATE(2008,3,18) isto što i 39525. Jednostavnim formatiranjem možeš datum da prikažeš kao broj i obrnuto. U prilogu je formula SUMPRODUCT sa datumom. Možda je problem u ostatku formule - dao si samo deo.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prikačeni fajlovi
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
79.101.151.*



+133 Profil

icon Re: [Excel] problem sa sumproduct20.03.2008. u 11:43 - pre 175 meseci
Code:
 With ActiveCell.Offset(0, 6)

     
       .Formula = "=-SUMPRODUCT(((a1:a" & ActiveCell.row - 1 & "<=a" & ActiveCell.row & ")*(a1:a" & ActiveCell.row -       1 & ">=" &                     dat(2)                                         & "))*(b1:b" & ActiveCell.row - 1 & "=" & obj(p) & ")*(f1:f" & ActiveCell.row - 1 & "=" & Chr (34)  & naziv & Chr(34) & "),g1:g" & ActiveCell.row - 1 & ")"

.Calculate
.Formula = .Value
.Value = .Value + TextBox2.Value




ovo je deo coda
gledamo izdvojenu liniju
problem je sa dat(2)

dim dat(1to 3) as date
dat(2) = 3/18

i ne radi
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2231
212.200.27.*

Sajt: www.gowi.rs


+103 Profil

icon Re: [Excel] problem sa sumproduct20.03.2008. u 12:47 - pre 175 meseci
Pa gde ti je tu funkcija DATE? To što si definisao promenljivu kao DATE nema nikakve veze, jer se implicitno konvertuje u string prilikom formiranja stringa za formulu!

Ovo bi trebalo da radi:
Code:

Sub Test()
Dim dat(1 To 3) As Date
dat(2) = 3 / 18
obj = 15
naziv = "test"
With ActiveCell
   .Formula = "=-SUMPRODUCT((a1:a" & ActiveCell.Row - 1 & "<=a" & ActiveCell.Row & ")*" & _
               "(a1:a" & ActiveCell.Row - 1 & ">= date(2008,3,18))* " & _
               "(b1:b" & ActiveCell.Row - 1 & "=" & obj & ")*" & _
               "(f1:f" & ActiveCell.Row - 1 & "=" & Chr(34) & naziv & Chr(34) & _
               "),g1:g" & ActiveCell.Row - 1 & ")"  
   .Calculate
   .Formula = .Value
End With
End Sub

Potpuno sam se izgubio u tvom kodu, pa sam pokušao da ga napišem malo preglednije u više redova. Inače nije mi jasna cela ova pretumbacija da bi dobio vrednost - zar nije jednostavnije da koristiš WorksheetFunction.SumProduct ili prosto petlju?
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
79.101.151.*



+133 Profil

icon Re: [Excel] problem sa sumproduct20.03.2008. u 13:53 - pre 175 meseci
ovo je samo deo koda...
sumproduct ne radi u vba, radi samo u excelu u slucaju kada treba da se ispita vrednost niza (a:a=nesto), ne znam sada tacno zbog cega ali znam da ne funkcionise preko koda.

sad u redu je to sto si napisao date(2008,3,18) ali meni tu treba da se nadje promenjliva a ne konstanta koju unosim preko textboxa a u kome hocu da unesem 3/18 ili 3/19 ili 3/20...

tu je problem

zato

">= date(2008,3,18))* " &

ovde mora da ide dat(2)
i onda nece da radi...
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2231
212.200.27.*

Sajt: www.gowi.rs


+103 Profil

icon Re: [Excel] problem sa sumproduct20.03.2008. u 15:41 - pre 175 meseci
Evo da se ispravim. Sumproduct funkcija se može pozvati iz VBA, kao i svaka druga Excel funkcija, ali je problem što ona zahteva jednodimenzionalne nizove, a opseg se pretvara u više dimenzionlane nizove (čak i kad je jedna kolon) i onda je to malo teže.
Način koji bih ja uradio je preko petlje - to je čisto i jednostavno
Code:

    For r = 1 To ActiveCell.Row - 1
        if uslov1 And uslov2 And uslov3 then 
           rezultat = rezultat + Range("G" & r)
        end if 
    Next i

gde uslove naravno zameniš sa ogovarajućim logičkim uslovima

Sa funkciojm Sumproduct a bez pretumbavanja
Code:

ActiveCell.Formula = Evaluate("=-SUMPRODUCT((a1:a" & ActiveCell.Row - 1 & "<=a" & ActiveCell.Row & ")*" & _
               "(a1:a" & ActiveCell.Row - 1 & ">= date(2008,3,18))* " & _
               "(b1:b" & ActiveCell.Row - 1 & "=" & obj & ")*" & _
               "(f1:f" & ActiveCell.Row - 1 & "=" & Chr(34) & naziv & Chr(34) & _
               "),g1:g" & ActiveCell.Row - 1 & ")")

Izmena da datum nije fiksna vrednost nego promenljiva obezbeđuje se izmenom tako što proslediš promenljivu dat2 u delovima (godina, mesec, dan) funkciji date
Code:

Sub Test()
' Pozivanje SUMPRODUCT funkcije iz koda
' sa jedim datumskim uslovom
' Za elitesecurity forum
' P.Jovanovic
'
Dim dat(1 To 3) As Date
dat(2) = "3 / 18"
God = Year(dat(2))
Mes = Month(dat(2))
Dan = Day(dat(2))
obj = 15
naziv = "test"
With ActiveCell
   .Formula = Evaluate("=-SUMPRODUCT( " & _
               "(a1:a" & ActiveCell.Row - 1 & ">=date(" & God & "," & Mes & "," & Dan & "))*" & _
               "(b1:b" & ActiveCell.Row - 1 & "=" & obj & ")*" & _
               "(f1:f" & ActiveCell.Row - 1 & "=" & Chr(34) & naziv & Chr(34) & _
               "),g1:g" & ActiveCell.Row - 1 & ")")
End With
End Sub

Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

anakin14

Član broj: 73683
Poruke: 862
79.101.165.*



+133 Profil

icon Re: [Excel] problem sa sumproduct21.03.2008. u 08:45 - pre 175 meseci
Hvala puno!!!
 
Odgovor na temu

[es] :: Office :: Excel :: [Excel] problem sa sumproduct

[ Pregleda: 2023 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.