• 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.

samengesteld argument voor WorksheetFunction.SumIf

Status
Niet open voor verdere reacties.

scherpbierje

Gebruiker
Lid geworden
18 apr 2012
Berichten
9
Hallo,
Ik wil in een worksheet met vba de voorwaardelijke som berekenen met de WorksheetFunction.SumIf
Dit werkt wel als ik voor het criteria-argument een enkele verwijzing opneem (bijv range("A28")) maar met een samengestelde verwijzing (bijv. ">" & range("A28") ) krijg ik altijd de waarde "0" terug.
kan iemand mij uitleggen hoe ik zoiets moet coderen?
Ik doe het nu binnen een zoek-loop op kolom B:B waarna ik vergelijk met de waarde in de kolom A:A en vervolgens de som wil hebben van kolom G:G

zie hieronder de code die ik nu heb

Code:
Sub test2()
Dim som As Double
Dim arg1 As Variant

With Worksheets(1).Range("B:B")
    Set C = .Find("SVB Rotterdam", LookIn:=xlValues, Searchorder:=xlByColumns)
    If Not C Is Nothing Then
     firstaddress = C.Address
     addr = C.Offset(0, -1)
     arg1 = C.Offset(0, -1)
     som = WorksheetFunction.SumIf(Range("A:A"), arg1, Range("G:G"))
     som = WorksheetFunction.Sum(Range("G:G"))
        
  Do
    rij = C.Row
    kol = C.Column
    C.Offset(0, 6).Value = Month(C.Offset(0, -1))
    Set C = .FindNext(C)
 Loop While Not C Is Nothing And C.Address <> firstaddress
    End If
End With
End Sub


Als ik voor arg1 C.Offset(0, -1) invul werkt het prima, als ik voor arg1 ">" & C.Offset(0, -1) of voor arg1 """>"""" & C.Offset(0, -1) invul krijg ik altijd de waarde 0 terug
 
Laatst bewerkt:
een klein voorbeeld bestand kan wonderen doen en plaats uw code aub tussen code tags.

Code:
Sub test2()
Dim som As Double
Dim arg1 As Variant

With Worksheets(1).Range("B:B")
Set C = .Find("SVB Rotterdam", LookIn:=xlValues, Searchorder:=xlByColumns)
If Not C Is Nothing Then
firstaddress = C.Address
addr = C.Offset(0, -1)
arg1 = C.Offset(0, -1)
som = WorksheetFunction.SumIf(Range("A:A"), arg1, Range("G:G"))
som = WorksheetFunction.Sum(Range("G:G"))

Do
rij = C.Row
kol = C.Column
C.Offset(0, 6).Value = Month(C.Offset(0, -1))
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstaddress
End If
End With
End Sub
 
sorry voor ontbreken tags en bestand

Sorry, ik had ff niet door hoe je dat moest doen (taggen)
Ik heb nu een klein voorbeeldbestand bijgesloten.
het gaat mij er om dat ik een som krijg van de bedragen die op of na een bepaalde datum zijn overgeboekt.
Die som wil ik in VBA berekenen en daar verder gebruiken.
 

Bijlagen

probleempje met het datumformaat.
Zo kan je het bijvoorbeeld doen met ">=" etc
Code:
           som = WorksheetFunction.SumIf(Range("A:A"), ">=" & CDbl(arg1), Range("G:G"))
 
Cow18 Bedankt!!!

Cow18, ik kende het CBdl(arg1) niet. Dat heeft het probleem opgelost! Fantastisch
Nu kan ik weer verder rommelen :confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan