16. november 2001 - 19:41Der 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
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
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.
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
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
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
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.