Siempre que trabajemos con muchas (miles) filas es conveniente optimizar el código de nuestra macro. Una forma de agilizar la presentación de los datos es utilizando diccionarios. Para ello hay que incluir en nuestro proyecto el complemento: «Microsoft Scripting Runtime«. Un ejemplo sencillo de aplicación sería el siguiente:
VB
Private Sub CommandButton1_Click()
'instalar ([Herramientas]->[Referencias]: Microsoft Scripting Runtime)
Dim i As Integer
Dim Dicti As Object
Set Dicti = New Scripting.dictionary
'tabla en rango "D10:E13"
i = 10
Do While Cells(i, 4).Value <> ""
If Dicti.exists(Cells(i, 4).Value) Then
Dicti(Cells(i, 4).Value) = Dicti(Cells(i, 4).Value) + Cells(i, 5).Value
Else
Dicti.Add Cells(i, 4).Value, Cells(i, 5).Value
End If
i = i + 1
Loop
'recorremos otra tabla, del rango "H10:I13"
'si el valor de la celda (Col H) coincide con un elemento del diccionario
'pondrá el valor del diccionario en la columna I
Dim Fil As Integer
For Fil = 10 To 13
If Dicti.exists(Cells(Fil, 8).Value) Then
Cells(Fil, 9).Value = Dicti(Cells(Fil, 8).Value)
End If
Next Fil
End Sub
Deja una respuesta