Avatar billede bak Forsker
16. november 2001 - 19:41 Der er 8 kommentarer og
1 løsning

Sum over periode

Jeg kunne godt tænke mig at se et godt svar på dette.
Kol A er datoer, sorteret, men med \"huller\".
Kol B er salg
I kol C ønskes det samlede salg de sidste 4 dage incl. selve dagen. Hvis der mangler datoer er der ikke solgt noget heller.
Dato          Salg    Sum
31-03-2001    100   
01-04-2001    0    100
02-04-2001    0    100
03-04-2001    100    200
04-04-2001    0    100
08-04-2001    0    0
09-04-2001    0    0
10-04-2001    0    0
11-04-2001    100    100
15-04-2001    0    0
16-04-2001    100    100
17-04-2001    0    100
18-04-2001    0    100

Bak
Avatar billede granhof Nybegynder
16. november 2001 - 20:16 #1
hvad mener du ???
Avatar billede lsimony Nybegynder
16. november 2001 - 20:21 #2
Sub sumDeSidste4dage()
    Dim dato As Date
    Dim dato4 As Date
   
    Dim sum As Double
   
    For i = 0 To 13
        sum = 0
        dato = Cells(1 + i, 1)
        dato4 = dato - 4
        For j = 0 To 13
        If Cells(1 + j, 1) <= dato And Cells(1 + j, 1) >= dato4 Then
            sum = sum + Cells(1 + j, 2)
        End If
        Next j
        Cells(1 + i, 5) = sum
       
    Next i
End Sub
Avatar billede bak Forsker
16. november 2001 - 20:38 #3
Med huller mener jeg at ikke alle datoer er med.
Den sum der står nu er bare for at vise hvad resultatet skal være.
dvs. summen ved 4-4-01 er 100 da der 1-4 er solgt 0, 2-4 solgt 0, 3-4 solgt 100 og 4-4 solgt 0.
summen ved 8-4 er 0 da der 5-4, 6-4, 7-4 og 8-4 ikke solgt noget.
Håber det blev lidt klarere.
simony > jeg kigger lige på dit senere i aften, men umiddelbart tegner det rigtigt.
Avatar billede lsimony Nybegynder
16. november 2001 - 20:54 #4
Hej BAK

Hvis du vil spare lidt på tiden, da kan du ændre FOR j - løkken til kun at gå til i stedet for det sidste tal. Dvs.

Sub sumDeSidste4dage()
    Dim dato As Date
    Dim dato4 As Date
   
    Dim sum As Double
   
    For i = 0 To 13
        sum = 0
        dato = Cells(1 + i, 1)
        dato4 = dato - 4
        For j = 0 To i
        If Cells(1 + j, 1) <= dato And Cells(1 + j, 1) >= dato4 Then
            sum = sum + Cells(1 + j, 2)
        End If
        Next j
        Cells(1 + i, 6) = sum
       
    Next i
End Sub
Avatar billede lsimony Nybegynder
16. november 2001 - 21:02 #5
Der er også denne model. Så slipper du for at checke alle dine celler. Jeg går ud fra at der ikke findes flere rækker med samme dato.

Sub sumII()
    Dim dato As Date
    Dim dato4 As Date
   
    Dim sum As Double
   
    For i = 0 To 13
        sum = 0
        dato = Cells(1 + i, 1)
        dato4 = dato - 4
        If i > 3 Then
            For j = i - 4 To i
                If Cells(1 + j, 1) <= dato And Cells(1 + j, 1) >= dato4 Then
                    sum = sum + Cells(1 + j, 2)
                End If
            Next j
        Else
            For j = 0 To i
                If Cells(1 + j, 1) <= dato And Cells(1 + j, 1) >= dato4 Then
                    sum = sum + Cells(1 + j, 2)
                End If
            Next j
        End If
        Cells(1 + i, 8) = sum
       
    Next i
End Sub
Avatar billede bak Forsker
16. november 2001 - 21:03 #6
Ok Lars, flot, Det virker med et par justeringer.
(jeg har overskrifter med). Du er sikret dine velfortjente point, men jeg lader lige spm. stå åbent til imorgen
Avatar billede bak Forsker
16. november 2001 - 21:04 #7
Hvorfor svare på sit eget spm :-) , jeg ville jo bare have kommenteret
Avatar billede janvogt Praktikant
18. november 2001 - 18:44 #8
>>>bak

Nu skriver du jo ikke noget om, at løsningen nødvendigvis skal være VBA. Det kan faktisk godt lade sig gøre uden v.h.a. følgende array-formel:

=SUM( ($A$2:$A$14<=A2) * ($A$2:$A$14>=A2-3) *  $B$2:$B$14)
Avatar billede bak Forsker
18. november 2001 - 21:33 #9
Yeeess Jan. Det virker også rigtig godt.
hent lidt point her
http://www.eksperten.dk/spm/135577
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester