Avatar billede Sjonne99 Nybegynder
02. juni 2015 - 09:36 Der er 6 kommentarer og
1 løsning

VBA til at tælle et udfald i bestemte celler i hele projektmappen

Hej Eksperter

Er det muligt at lave en makro der går ind og tæller automatisk de samme celler for et bestemt udfald, (i dette tilfælde skal jeg tælle antallet af "ferie" forekomster) for alle faner selvom der bliver oprettet nye faner.
Avatar billede jens48 Ekspert
02. juni 2015 - 13:22 #1
Hvis alle arkene har et dataområde der inkluderer A1 kan nedenstående makro bruges:

Sub Tael()
Dim Sht As Worksheet
x = 0
For Each Sht In ActiveWorkbook.Worksheets
x = Application.CountIf(Sht.Range("a1").CurrentRegion, "Ferie") + x
Next
MsgBox ("Ferie forekommer " & x & " gange")
End Sub
Avatar billede Sjonne99 Nybegynder
02. juni 2015 - 14:37 #2
Ikke helt sådan jeg har tænkt.

Tænker lidt mere at det må skulle være en private sub der i celle "v7", tæller op hvor mange gange "ferie" fremkommer i celle "B4" "B25" osv. på alle fanebladene ( altså det er de samme celler der skal tælles i alle fanebladene )
Avatar billede jens48 Ekspert
02. juni 2015 - 14:55 #3
Prøv med denne. Den tæller op hvad der er i området B4:B25 og lægger svaret i V7.

Sub Tael()
Dim Sht As Worksheet
For Each Sht In ActiveWorkbook.Worksheets
Sht.Range("V7") = Application.CountIf(Sht.Range("B4:B25"), "Ferie")
Next
End Sub
Avatar billede Sjonne99 Nybegynder
02. juni 2015 - 15:10 #4
Nu nærmer det sig.

Dog tænker jeg om man i stedet for at få antallet for hvert ark, i et felt, i stedet kan få den til at udregne det samlede antal for alle ark. Og så skrive resultatet ind i en celle i et bestemt ark ? lad os bare kalde arket "år"
Avatar billede jens48 Ekspert
02. juni 2015 - 15:19 #5
Ja, men så må det blive noget i denne retning:

Sub Tael()
Dim Sht As Worksheet
x = 0
For Each Sht In ActiveWorkbook.Worksheets
x = Application.CountIf(Sht.Range("B4:B25"), "Ferie") + x
Next
Worksheets("År").Range("V7") = x
End Sub
Avatar billede Sjonne99 Nybegynder
02. juni 2015 - 16:09 #6
Så virker det :) Smid et svar

Lige et par spørgsmål her til sidst, er ret ny til VBA.

Hvordan gør jeg så det kun er B4 og B25 den tæller i, og ikke fra B4 til B25 troede det var ; der skulle imellem så?

Hvordan får jeg den til at køre automatisk ?

Og så bare lige for nysgerrighedens skyld og så jeg får lidt bedre forståelse for det, hvorfor tager du og sætter x=0
Avatar billede jens48 Ekspert
02. juni 2015 - 16:50 #7
Med kun B4 og B25 kan det se således ud:

Sub Tael()
Dim Sht As Worksheet
x = 0
For Each Sht In ActiveWorkbook.Worksheets
x = Application.CountIf(Sht.Range("B4"), "Ferie") + Application.CountIf(Sht.Range("B25"), "Ferie") + x
Next
Worksheets("År").Range("V7") = x
End Sub

X=0 er strengt taget ikke nødvendigt da X ikke huskes fra gang til gang.
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

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