Plotinus
Gebruiker
- Lid geworden
- 25 mrt 2007
- Berichten
- 659
Ik wil voor een heleboel rijen op een bepaald tabblad de gegevens kopiëren naar twee (wegings)kolommen en vervolgens moeten de daar berekende resultaten weer worden weggeschreven naar een ander tabblad. Ik doe dat nu als volgt:
Dit werkt, maar duurt lang en moet naar mijn gevoel slimmer en sneller kunnen. Ik dacht het te doen met een Array; alle 33 items in één variabele inlezen en liefst ook in één slag weer uitlezen. Ik heb een eerste beginnetje en dat ziet er als volgt uit:
Dat oogt ook niet handig: de array vullen is 33 keer '. Range(...)'; wordt dus een heel lange regel. Vraag is nu kan dit handiger? Alle in te lezen items liggen naast elkaar en aansluitend.
Vraag is ook hoe ik ze in één slag weer uitlees in het tabblad "Actuele score" zoals hierboven aangegeven:
Code:
For k = 1 To 5000
For l = 1 To 33
Worksheets("Actuele_Score").Range("M9").Offset(l, 0).Value = Worksheets("Resultaten").Range("K" & k).Offset(0, l - 1)
Worksheets("Actuele_Score").Range("N9").Offset(l, 0).Value = Worksheets("Resultaten").Range("K" & k).Offset(0, l + 41)
Next l
Opslaan_data (aanroepen wegschrijf-routine)
Next k
Dit werkt, maar duurt lang en moet naar mijn gevoel slimmer en sneller kunnen. Ik dacht het te doen met een Array; alle 33 items in één variabele inlezen en liefst ook in één slag weer uitlezen. Ik heb een eerste beginnetje en dat ziet er als volgt uit:
Code:
With Worksheets("Resultaten")
For k = 1 To 5000
Data = Array(.Range("K" & k), .Range("L" & k), .Range("M" & k))
Next k
End With
Dat oogt ook niet handig: de array vullen is 33 keer '. Range(...)'; wordt dus een heel lange regel. Vraag is nu kan dit handiger? Alle in te lezen items liggen naast elkaar en aansluitend.
Vraag is ook hoe ik ze in één slag weer uitlees in het tabblad "Actuele score" zoals hierboven aangegeven:
Code:
Worksheets("Actuele_Score").Range("M9").Offset(l, 0).Value = Worksheets("Resultaten").Range("K" & k).Offset(0, l - 1)