Beste helpers,
Hoewel ik steeds meer begin te begrijpen van een dictionary toch een paar vragen:
In dit draadje https://www.helpmij.nl/forum/showthread.php/941215-dubbele-data-optellen?p=6135998#post6135998 heb ik weliswaar een werkende oplossing geplaatst maar volgens mij moet de code eenvoudiger kunnen. Waar ik tegenaan loop is dat ik niet direct de array die gekoppeld is aan de key kan manipuleren. Wel opvragen maar de waarde wijzigen lukt niet.
Door het gebruik van een variabele lukt dit wel maar lijkt mij omslachtig? Maak ik hier een denkfout of kan het niet anders?
De uiteindelijke gegevens wil ik wegschrijven dmv
maar dan krijg ik de Amerikaanse datumnotatie. Met een extra variabele en een lusje lukt het wel maar kan dit niet eenvoudiger?
Werkt wel maar omslachtig denk ik:
Werkt (nog)niet:
Hoewel ik steeds meer begin te begrijpen van een dictionary toch een paar vragen:
In dit draadje https://www.helpmij.nl/forum/showthread.php/941215-dubbele-data-optellen?p=6135998#post6135998 heb ik weliswaar een werkende oplossing geplaatst maar volgens mij moet de code eenvoudiger kunnen. Waar ik tegenaan loop is dat ik niet direct de array die gekoppeld is aan de key kan manipuleren. Wel opvragen maar de waarde wijzigen lukt niet.
Code:
d.Item(c00)(3) = d.Item(c00)(3) + 1
De uiteindelijke gegevens wil ik wegschrijven dmv
Code:
Sheets("Blad2").Cells(1).Resize(d.Count, UBound(ar, 2)) = Application.Index(d.items, 0, 0)
Werkt wel maar omslachtig denk ik:
Code:
Sub VenA() ar = Sheets("Export TT").Cells(1).CurrentRegion
Set d = CreateObject("Scripting.dictionary")
For j = 1 To UBound(ar)
c00 = ar(j, 5) & ar(j, 6) & ar(j, 7) & ar(j, 8)
If d.Exists(c00) Then
ar1 = d.Item(c00)
ar1(3) = ar1(3) + 1
d.Item(c00) = ar1
Else
d.Item(c00) = Application.Index(ar, j, 0)
End If
Next j
ar2 = Application.Index(d.items, 0, 0)
For j = 2 To UBound(ar2)
ar2(j, 7) = CDate(ar2(j, 7))
ar2(j, 9) = CDate(ar2(j, 9))
Next j
Sheets("Blad2").Cells(1).Resize(d.Count, UBound(ar, 2)) = ar2
End Sub
Werkt (nog)niet:
Code:
Sub VenA_test()ar = Sheets("Export TT").Cells(1).CurrentRegion
Set d = CreateObject("Scripting.dictionary")
For j = 1 To UBound(ar)
c00 = ar(j, 5) & ar(j, 6) & ar(j, 7) & ar(j, 8)
If d.Exists(c00) Then
Debug.Print d.Item(c00)(3)
d.Item(c00)(3) = d.Item(c00)(3) + 1
Debug.Print d.Item(c00)(3)
Else
d.Item(c00) = Application.Index(ar, j, 0)
'Debug.Print d.Item(c00)(3)
End If
Next j
Sheets("Blad2").Cells(1).Resize(d.Count, UBound(ar, 2)) = Application.Index(d.items, 0, 0)
End Sub
Bijlagen
Laatst bewerkt: