• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Meerdere kolommen optellen

Status
Niet open voor verdere reacties.

Sappho2711

Gebruiker
Lid geworden
4 jul 2006
Berichten
5
Hallo,

Na een dag knoeien wordt het nu tijd om hulp in te roepen. Het is waarschijnlijk heel simpel, maar ik kom er niet uit. Wat is het geval.

Ik heb een Excelsheet waarin automatisch een tekstbestand wordt geïmporteerd. Het aantal kolommen en rijen kan variëren. Vanaf kolom C wil ik de totalen berekenen. Het lukt me op het totaal van kolom C te berekenen en vervolgens de volgende cel (in kolom D, op dezelfde rij) te selecteren. Met geen mogelijkheid kan ik echter daar een totaal berekenen.
Het betreft een bestand als hieronder te zien is.

kolomkop kolomkop kolomkop kolomkop kolomkop
getal1 tekst1 1 6 2
getal2 tekst2 2 5 4
getal3 tekst3 3 4 5
getal4 tekst4 4 3 6
getal5 tekst5 5 2 7
Totaal 15

De code die ik nu gebruik is:
Dim iColumn As Integer
Dim iRow As Integer
Dim rRange As Object

Range("A1").Select
iColumn = Selection.End(xlToRight).Column

'Voorkomen overloop (overflow)
If Selection.End(xlDown).Row = 65536 Then
iRow = 1
Else
iRow = Selection.End(xlDown).Row
End If

Range("A1", Cells(iRow, iColumn)).Select
iRow = iRow + 1
Range(iRow & ":" & iRow).Select
Selection.Insert shift:=xlDown
Range("A" & iRow).Select
ActiveCell.Formula = "Totaal"

Range("C" & iRow).Select
ActiveCell.Formula = "=SUM(C2:C" & (iRow - 1) & ")"

... en dan houdt het een beetje op. Ik heb al vanalles geprobeerd, maar het lukt me niet. Hopelijk kan iemand me op weg helpen.
Alvast bedankt.
 
Helpt dit je uit de penarie?

Code:
Sub optellen()
Dim iRow As Integer

iRow = Range("A1").End(xlDown).Row + 1

Range("A" & iRow) = "Totaal"
Range("C" & iRow).Formula = "=SUM(C2:C" & iRow - 1 & ")"
Range("D" & iRow).Formula = "=SUM(D2:D" & iRow - 1 & ")"
End Sub

Wigi
 
Tot op zekere hoogte denk ik. Het ziet er in ieder geval al een stuk overzichtelijker uit :). Het aantal kolommen kan echter variëren, dus het gebruik van kolomletters ("D", "E") wil ik eigenlijk vermijden. Is dat op een of andere manier variabel te maken?
 
Akkoord, dit kan, maar hoe ga je Excel laten weten welke kolommen hij moet nemen?
 
Tja, dat is nou net het probleem. Met iets als:
For i = 4 To iColumn
Cells(iRow, i).Select
Selection.Formula = "=SUM(" & Cells(2, i) & ":" & Cells(iRow - 1, i) & ")"
Next

Tot mijn verrassing krijg ik nu geen foutmelding meer (nu ik het voor de zekerheid nog een keer test), maar kloppen de waarden niet (kolom D in mijn voorbeeld geeft 59 en E 0, terwijl ik resp. 20 en 24 zou verwachten).
 
Hello

gebruik

Code:
Sub optellen()
Dim iRow As Integer, iCol As Integer, i As Integer

iCol = Range("A1").End(xlToRight).Column
iRow = Range("A1").End(xlDown).Row + 1

Range("A" & iRow) = "Totaal"
For i = 4 To iCol
    Cells(iRow, i).Formula = "=SUM(R[-5]C[]:R[-1]C[])"
Next
End Sub

Wigi
 
En als ik het dan ook nog als volgt definieer, werkt het ook nog bij een variabel aantal rijen:
Cells(iRow, i).Formula = "=SUM(R[-" & (iRow - 1) & "]C:R[-1]C)"

Helemaal goed, bedankt voor je hulp!
 
Goed zo. De haakjes rond

iRow - 1

mogen zelfs nog weg als je wil.

Met plezier gedaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan