regels selekteren op basis van een deel van de celinhoud

Status
Niet open voor verdere reacties.

filmkraker

Gebruiker
Lid geworden
16 jan 2012
Berichten
19
ik heb een draaitabel met lokatienummers en bedragen (zie bijlage).
Deze draaitabel heeft een steeds wisselend aantal regels, afhankelijk van de input.
Nu wil ik graag de regels selecteren die met 2012 beginnen en daarvan onder de tabel het totaal vermelden.
Ik heb weinig ervaring en heb na rondzoeken op dit forum het een en ander geprobeerd, maar dat werkt niet.
wie wil me helpen ?
Alvast bedankt.Bekijk bijlage voorbeeld draaitabel.xlsx
 
Code:
Sub tst()
    With Sheets("Blad1")
        sTotal = 0
        For Each fCell In .Range("I3", .Range(.Range("I3").End(xlDown).Address))
            If Left(fCell, 5) = "2012-" Then
                sTotal = sTotal + fCell.Offset(, 1).Value
            End If
        Next
        .[J23] = sTotal
    End With
End Sub
 
Laatst bewerkt:
Code:
Sub tst()
    With Sheets("Blad1")
        sTotal = 0
        For Each fCell In .Range("I3", .Range(.Range("I3").End(xlDown).Address))
            If Left(fCell, 5) = "2012-" Then
                sTotal = sTotal + fCell.Offset(, 1).Value
            End If
        Next
        .[J23] = sTotal
    End With
End Sub

bedankt hiervoor. Ik ga het vandaag meteen even proberen. Wel lijkt het zo dat het resultaat altijd op regel 23 komt en dat is niet de bedoeling. Het moet altijd op de tweede regel onder de totaalregel komen
en die staat zoals gezegd, steeds ergens anders. Dus wellicht zoeken op Eindtotaal en dan twee regels erbij tellen of zoiets
Ik hoor het graag nog van je
Alvast bedankt
 
Code:
Sub tst()
    With Sheets("Blad1")
        sTotal = 0
        For Each fCell In .Range("I3", .Range(.Range("I3").End(xlDown).Address))
            If Left(fCell, 5) = "2012-" Then
                sTotal = sTotal + fCell.Offset(, 1).Value
            End If
        Next
        .Range("J" & .Cells(Rows.Count, 10).End(xlUp).Offset(2).Row) = sTotal
    End With
End Sub
 
Code:
Sub tst()
    With Sheets("Blad1")
        sTotal = 0
        For Each fCell In .Range("I3", .Range(.Range("I3").End(xlDown).Address))
            If Left(fCell, 5) = "2012-" Then
                sTotal = sTotal + fCell.Offset(, 1).Value
            End If
        Next
        .Range("J" & .Cells(Rows.Count, 10).End(xlUp).Offset(2).Row) = sTotal
    End With
End Sub

Bakkertje, bedankt weer.
Hij is bijna goed... als je de macro herhaaldelijk gebruikt komen er steeds 2 regels onder, ofwel de lijst groeit.
Je zou dus in de row moeten zoeken naar de tekst "Eindtotaal" en daar dan een offset van 2 opzetten.

Ander detail is nog dat ik de macro wil kunnen gebruiken in alle werkbladen die allemaal heel verschillende namen hebben.
Dus niet zoals nu met "Blad1" maar met iets van ActiveSheet of zoiets.
Alvast bedankt,
Gert
 
Bakkertje, bedankt weer.
Hij is bijna goed...

Ik heb je macro iets aangepast zodat hij in de kolom voor het totaal "totaal 2012-" zet.
als je de macro herhaaldelijk gebruikt komen er steeds 2 regels onder omdat dan de "totaal 2012-" regel ook wordt meegeteld, ofwel de lijst groeit.
Je zou dus in de row moeten zoeken naar de tekst "Eindtotaal" en daar dan een offset van 2 opzetten.

Ander detail is nog dat ik de macro wil kunnen gebruiken in alle werkbladen die allemaal heel verschillende namen hebben.
Dus niet zoals nu met "Blad1" maar met iets van ActiveSheet of zoiets.
Alvast bedankt,
Gert
 
Code:
Sub tst()
    With Sheets("Blad1")
        sTotal = 0
        For Each fCell In .Range("I3", .Range(.Range("I3").End(xlDown).Address))
            If Left(fCell, 5) = "2012-" Then
                sTotal = sTotal + fCell.Offset(, 1).Value
            End If
        Next
        sAdres = .Columns(9).Find("Eindtotaal", , xlValues, xlWhole).Offset(2, 1).Address
        .Range(sAdres) = sTotal
    End With
End Sub
 
Hoi Rudi,

Ja zo werkt het goed!
Bedankt voor al je moeite

mvg
Gert
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan