05. januar 2008 - 14:54Der er
17 kommentarer og 1 løsning
Makro der kan tælle timer sammen
I regnearket OpgørelsexNAVNx2008 indsamles nr. og de timer og overtimer der er udført på nr.
Arket er delt op i 53 uger. Arket omfatter D4:FF53
I kolonne D står nr. I kolonne E står timerne I kolonne F står overtimer Arket slutter med I kolonne FD står nr. I kolonne FE står timerne I kolonne FF står overtimer
Arket opsamler nr. og timerne fra nogle Excel filer.
Opgaven: Jeg kopier en, to, tre eller 4 uger fra filen OpgørelsexNAVNx2008 over i filen TESTopgørelsexNAVNx2008 ved hjælp af en lille Makro. Det giver ikke den store opgave hvis det kun er en uge der kopieres over, men er det to, tre eller fire uger giver det meget arbejde eks.:
U G E 0 1 U G E 0 2 U G E 03 Nr. NT OT Nr. NT OT Nr. NT OT 123 7 4 123 5 2 456 7 4 345 8 5 214 8 3 123 8 3 333 3 4 345 8 5 348 7 4 234 8 3 383 3 4 555 7 4
OSV op til 50 rækker.
Min opgave er, at jeg skal have f.eks timerne i nr. 123 lagt sammen for uge 1, 2 og 3. manuelt giver det:
=SUM.HVIS(A2:A50;123;B2:B0)+(SUM.HVIS(D2:D50;123;E2:E0)+SUM.HVIS(G2:G50;123;H2:H50) for tid og =SUM.HVIS(A2:A50;123;C2:B0)+(SUM.HVIS(D2:D50;123;F2:F0)+SUM.HVIS(G2:G50;123;I2:I50) for overtid.
Tilsvarende for andre numre. I ocverstående går jeg ud fra at Numre står i A, D og G, tid i B, E og H og overtid i C, F og I og at data starter i række 2. Ret selv til, så det passer.
Fro at gøre det nemmere for dig selv, kan du skrive dine formler i fx B60 og C60, I A60 skirver du så 123. Ret formlerne så 123 erstattes af A60. Kopier formlerne nedad. Så skal du bare skrive dine numre i A-kolonnen, så skulle det kør af sig selv.
jkrons Tak, for dit svar, men svaret løser ikke min opgave på en nem måde. Jeg skulle selvfølgelig havde beskrevet opgaven ordentligt, for nr. 123 vil ikke forekomme mere end mindst 1 uge og højst 4 uger, derfor skal jeg ændre i formlen mange gange i løbet af et år, min 650 eller max. 1350 gange. Tak for kommentaren. alicev
yep, men jeg går ud fra at fx. nr 123 kan stå hvor som helst i området D4:FF53 Af samme grund må formlerne tage højde for dette,- og det bliver nogen mega formler :-)
Det har du ret i, hvis de står i helt tilfældig orden i områderne. I den situation ville jeg nok vælge en anden struktur på mine data, så ugerne stod under hinanden i stedet for ved siden af hinanden.
excelent Det er noget i den retning jeg søger, men Makroen regner på en eller anden måde forkert.
Jeg har prøvet at kopier de virkelige tal over i dit SumTid.
Nr. 1008872 har før beregningen 37 timer i en uge og 14,5 i en anden uge. Efter beregninger har nr. 1008872 14,5 timer i hver sin uge, så der er gået 29 timer tabt.
Før beregningerne var der i en 4 ugers periode 1677 timer efter beregningerne er der 1786 timer. alicev
Det lyder mystisk :-) Jeg har ikke endnu kunnet få koden til at regne forkert Vi mangler godt nok at slette kolonne B og C ved kørsel hvis et nr. evt ikke er med i en ny kørsel det kan gøres med følgende linie indsat i koden som nr. 2 Range("B5:C1000") = ""
For nr = 4 To Cells(65500, "O").End(xlUp).Row If Cells(nr, "O") <> "" Then For col = 1 To 12 Step 3 For rk = 4 To 53 If Cells(rk, col) = Range("O" & nr) Then x = x + Cells(rk, col).Offset(0, 1) If Cells(rk, col) = Range("O" & nr) Then o = o + Cells(rk, col).Offset(0, 2) Next Next Range("P" & nr) = x Range("Q" & nr) = o x = 0: o = 0 End If Next Application.ScreenUpdating = True
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.