Avatar billede bodid Nybegynder
13. februar 2004 - 12:16 Der er 11 kommentarer og
2 løsninger

Brug af variabel i SUM-funktion

Jeg har et ark hvor kolonne A indeholder navne og kolonne B nogle beløb.

Jeg vil gerne have summeret de beløb i kolonne B 2 celler længere nede.

Jeg ved at mit range altid starter i B2.

Jeg har forsøgt at tælle hvor mange gange der står et navn og så få den værdi ind i min formel.

EKSEMPEL:

Sub count()

Range("a1").Select

Dim x As Integer

Do
   
If ActiveCell.Value <> "" Then

x = x + 1
ActiveCell.Offset(1, 0).Select

End If

Loop Until ActiveCell.Value = "" ' gøres indtil cellen er blank

ActiveCell.Offset(1, 1).Select
ActiveCell.Formula = sum(B2 & ":" & 2 & x + 2)

End Sub

Hvis der i Kolonne A er 2 navne er min hensigt at formlen skal se således ud. =SUM(B2:B4)

Men der meldes fejl i formlen.
13. februar 2004 - 12:19 #1
SUM.HVIS formlen kan vist gøre arbejdet for dig....... helt uden VBA.
Avatar billede jkrons Professor
13. februar 2004 - 12:23 #2
Pørv med

Range("a2").Select
Selection.End(xlDown).Select
a = Selection.Offset(0, 1).Address
ActiveCell.Offset(1, 1).Formula = "=sum(b2:" & a & ")"
13. februar 2004 - 12:26 #3
Hvis det skal være VBA, så kan det gøres i en sætning

ActiveCell.Offset(1,1).Formula = "=sum(b2:" & Range("A2").End(xlDown).address & ")"
13. februar 2004 - 12:28 #4
jkrons> Select er nærmest et forbudt ord i VBA :-)

Select er en tidsrøver af format.
Avatar billede jkrons Professor
13. februar 2004 - 12:29 #5
flemmingdahl-> Din kode tager udgangspunkti ActiveCell.  Det holder vel ikke, når resultatet altid skal stå et bestemt sted? Eller fordrer i vert fald at markøren står rigtigt inden du afspiller koden?
13. februar 2004 - 12:30 #6
Tror nu i øvrigt ikke ovenstående løser problemet, men at dette gør:

Sub Count()
    Range("A2").End(xlDown).Offset(1,1).Formula = _
        "=sum(b2:" & Range("A2").End(xlDown).address & ")"
End Sub
13. februar 2004 - 12:30 #7
rigtig set jkrons - det fangde jeg også lige selv :-)
Avatar billede jkrons Professor
13. februar 2004 - 12:30 #8
I know. Men med bare en nogenlunde hurtig pc, skal det være et voldsomt stort regneark før du oplever rergistrerbar forsinkelser ved brugen.
13. februar 2004 - 12:31 #9
eller sådan:

Sub Count()
    With Range("A2").End(xlDown)
        .Offset(1,1).Formula = "=sum(b2:" & .address & ")"
    End With
End Sub
13. februar 2004 - 12:33 #10
rigtigt med tiden, men ting har det med at vokse.... nå, never mind, men jeg bruger næsten aldrig select, specielt fordi det kan laves uden.
Avatar billede jkrons Professor
13. februar 2004 - 12:34 #11
Du har selvfølgelig ret i at det meste kan laves uden - jeg synes bare ofte det giver bedre overblik at se, hvilke celler, der faktisk tages udgangspunkt i.
13. februar 2004 - 12:38 #12
Overblik.... måske - det er vist bare vane. 75% af mit arbejde er VBA i Excel/Word.

Nå, lad os stoppe den her - det er vist ligegyldigt for spørgsmålet.
Avatar billede jkrons Professor
13. februar 2004 - 12:40 #13
flemming-> Vi stopper :-)  Men du har nok ret i det med vanen.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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