Avatar billede fimo Seniormester
12. september 2015 - 18:53 Der er 11 kommentarer og
1 løsning

MACRO - SAMMENTÆLLING ?

Hej,
Jeg har forsøgt at optage en ny macro i Excel og den fungere ok
men jeg ville gerne have mulighed for at den slutter min macro af med at lave et sammentællings felt nederst i hver kollone.
men ved ikke hvordan jeg skal gøre det i min macro når række antallet er forskelligt fra fil til fil som jeg køre min macro på.

Men findes der en løsning på dette problem ?
Avatar billede supertekst Ekspert
12. september 2015 - 23:43 #1
Find antal rækker i den aktuelle kolonne og indsæt en formel:

F.eks. hvis kolonne A

Sub beregnSum()
Dim antalRækker As Integer
Const totalSUM = "=Sum(A1:A"
    Range("A1").Activate
    antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
    Range("A" & antalRækker + 1).Formula = totalSUM & CStr(antalRækker) & ")"
End Sub
Avatar billede natkatten Mester
12. september 2015 - 23:44 #2
Ja
Avatar billede store-morten Ekspert
13. september 2015 - 03:50 #3
Sætter Autosum nederst i H:J  (8 To 10)
Start i række 1 kan ændres:      Cells(1, i)

Sub AutoSum()
    Dim i As Integer

    For i = 8 To 10
    With Cells(Rows.Count, i).End(xlUp)
        .Offset(1).Formula = "=SUM(" & Cells(1, i).Address & ":" & .Address(0, 0) & ")"
    End With
    Next

End Sub
Avatar billede fimo Seniormester
13. september 2015 - 12:34 #4
Tak for jeres svar men er ikke sikker på hvor / hvordan jeg skal indsætte koden, den ser sådan ud i min test macro

Sub )
'
' test Makro
'
' Genvejstast:Ctrl+a
'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;D:\temp\Reservation_List.csv", Destination:=Range _
        ("$A$1"))
        .Name = "Reservation_List"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("B16").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
    Range("B16").Select
    Selection.AutoFill Destination:=Range("B16:D16"), Type:=xlFillDefault
    Range("B16:D16").Select
    Range("E16").Select
End Sub
Avatar billede store-morten Ekspert
13. september 2015 - 13:01 #5
Du kan kopiere hele koden, og indsætte den som en selvstændig makro.
Du skal tilrette den, til de kolonner det omhandler.

Den kan evt. køres til sidst i din makro, ved at tilføje:
Call AutoSum før sidste
End Sub
Avatar billede fimo Seniormester
13. september 2015 - 13:13 #6
ok så tester jeg at kopiere den som sin egen kode...
Betyder det så at jeg skal have 2 mackroer oprettet hvor jeg så indsætter som du skriver Call AutoSum før sidste
End Sub = den så køre den anden macro eller kan jeg have det hele stående i en macro, ved ikke om jeg forklare det helt "sort" håber at du / i bære over med mig :o)
Avatar billede store-morten Ekspert
13. september 2015 - 13:23 #7
I hvilke kolonner skal der indsættes Autosum?

Ja, hvis din kode er ok, køres Sub AutoSum() til sidst :-) som beskrevet.

Sub DinKode()

        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("B16").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
    Range("B16").Select
    Selection.AutoFill Destination:=Range("B16:D16"), Type:=xlFillDefault
    Range("B16:D16").Select
    Range("E16").Select
Call AutoSum
End Sub

Sub AutoSum()
    Dim i As Integer

    For i = 8 To 10
    With Cells(Rows.Count, i).End(xlUp)
        .Offset(1).Formula = "=SUM(" & Cells(1, i).Address & ":" & .Address(0, 0) & ")"
    End With
    Next

End Sub
Avatar billede store-morten Ekspert
13. september 2015 - 13:26 #8
AutoSum()

Sætter Autosum nederst i H:J

Fra H1 til sidste række
Fra I1 til sidste række
Fra J1 til sidste række
Avatar billede fimo Seniormester
13. september 2015 - 13:37 #9
Det er altid kollone B+C+D som der skal autosammentælles i men som beskrevet øverst, så er der forskelle på rækkeantallet fra fil til fil som jeg køre min macro på.....
Avatar billede store-morten Ekspert
13. september 2015 - 13:41 #10
Så ret til:

For i = 2 To 4
Avatar billede fimo Seniormester
13. september 2015 - 13:51 #11
Hej Morten...

Super det virker præcist efter hensigten... smid et svar til point..
Avatar billede store-morten Ekspert
13. september 2015 - 13:52 #12
Kommer her ;-)
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