Excel - Macro muy lenta

 
Vista:

Macro muy lenta

Publicado por Vanessa (2 intervenciones) el 10/07/2018 16:06:18
Tengo un código que suma valores generando distintas combinaciones tomando valores de otra hoja, pero es super lento, se que se puede optimizar pero no se muy bien como usar vba.
Agradecería cualquier ayuda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Private Sub CommandButton1_Click()
 
'Contar
Dim con As Integer
con = 0
uf1 = 700000
For k = 3 To uf1
  If Hoja8.Cells(k, 12) <> Empty Then
  con = con + 1
  End If
Next k
 
 
Dim j As Integer
Dim p As Integer
 
j = con
 
p = 1
For i = 1 To j Step 4
 
'Combinacion1
Hoja9.Cells(1 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(1 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(1 + p, 3) = "COMB1"
Hoja9.Cells(1 + p, 4) = 1.4 * Hoja8.Cells(2 + i, 19)
Hoja9.Cells(1 + p, 5) = 1.4 * Hoja8.Cells(2 + i, 20)
Hoja9.Cells(1 + p, 6) = 1.4 * Hoja8.Cells(2 + i, 21)
'Combinacion2
Hoja9.Cells(2 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(2 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(2 + p, 3) = "COMB2"
Hoja9.Cells(2 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + 1.6 * Hoja8.Cells(3 + i, 19)
Hoja9.Cells(2 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + 1.6 * Hoja8.Cells(3 + i, 20)
Hoja9.Cells(2 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + 1.6 * Hoja8.Cells(3 + i, 21)
'Combinacion3
Hoja9.Cells(3 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(3 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(3 + p, 3) = "COMB3"
Hoja9.Cells(3 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(3 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(3 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion4
Hoja9.Cells(4 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(4 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(4 + p, 3) = "COMB4"
Hoja9.Cells(4 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(4 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(4 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion5
Hoja9.Cells(5 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(5 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(5 + p, 3) = "COMB5"
Hoja9.Cells(5 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(5 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(5 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion6
Hoja9.Cells(6 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(6 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(6 + p, 3) = "COMB6"
Hoja9.Cells(6 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(6 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(6 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion7
Hoja9.Cells(7 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(7 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(7 + p, 3) = "COMB7"
Hoja9.Cells(7 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(7 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(7 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion8
Hoja9.Cells(8 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(8 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(8 + p, 3) = "COMB8"
Hoja9.Cells(8 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(8 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(8 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion9
Hoja9.Cells(9 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(9 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(9 + p, 3) = "COMB9"
Hoja9.Cells(9 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(9 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(9 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion10
Hoja9.Cells(10 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(10 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(10 + p, 3) = "COMB10"
Hoja9.Cells(10 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(10 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(10 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion11
Hoja9.Cells(11 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(11 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(11 + p, 3) = "COMB11"
Hoja9.Cells(11 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(11 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(11 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion12
Hoja9.Cells(12 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(12 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(12 + p, 3) = "COMB12"
Hoja9.Cells(12 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(12 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(12 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion13
Hoja9.Cells(13 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(13 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(13 + p, 3) = "COMB13"
Hoja9.Cells(13 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(13 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(13 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion14
Hoja9.Cells(14 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(14 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(14 + p, 3) = "COMB14"
Hoja9.Cells(14 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) + 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(14 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(14 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion15
Hoja9.Cells(15 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(15 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(15 + p, 3) = "COMB15"
Hoja9.Cells(15 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(15 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(15 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion16
Hoja9.Cells(16 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(16 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(16 + p, 3) = "COMB16"
Hoja9.Cells(16 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(16 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) + 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(16 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion17
Hoja9.Cells(17 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(17 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(17 + p, 3) = "COMB17"
Hoja9.Cells(17 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(17 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(17 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) + 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion18
Hoja9.Cells(18 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(18 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(18 + p, 3) = "COMB18"
Hoja9.Cells(18 + p, 4) = 1.2 * Hoja8.Cells(2 + i, 19) + Hoja8.Cells(3 + i, 19) - 1.4 * Hoja8.Cells(5 + i, 19)
Hoja9.Cells(18 + p, 5) = 1.2 * Hoja8.Cells(2 + i, 20) + Hoja8.Cells(3 + i, 20) - 1.4 * Hoja8.Cells(5 + i, 20)
Hoja9.Cells(18 + p, 6) = 1.2 * Hoja8.Cells(2 + i, 21) + Hoja8.Cells(3 + i, 21) - 1.4 * Hoja8.Cells(5 + i, 21)
'Combinacion19
Hoja9.Cells(19 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(19 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(19 + p, 3) = "COMB19"
Hoja9.Cells(19 + p, 4) = 0.9 * Hoja8.Cells(2 + i, 19) + 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(19 + p, 5) = 0.9 * Hoja8.Cells(2 + i, 20) + 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(19 + p, 6) = 0.9 * Hoja8.Cells(2 + i, 21) + 1.4 * Hoja8.Cells(4 + i, 21)
'Combinacion20
Hoja9.Cells(20 + p, 1) = Hoja8.Cells(i + 2, 12)
Hoja9.Cells(20 + p, 2) = Hoja8.Cells(i + 2, 13)
Hoja9.Cells(20 + p, 3) = "COMB20"
Hoja9.Cells(20 + p, 4) = 0.9 * Hoja8.Cells(2 + i, 19) + 1.4 * Hoja8.Cells(4 + i, 19)
Hoja9.Cells(20 + p, 5) = 0.9 * Hoja8.Cells(2 + i, 20) + 1.4 * Hoja8.Cells(4 + i, 20)
Hoja9.Cells(20 + p, 6) = 0.9 * Hoja8.Cells(2 + i, 21) - 1.4 * Hoja8.Cells(4 + i, 21)
 
 
p = p + 20
Next i
 
 
MsgBox ("Proceso Terminado")
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro muy lenta

Publicado por Antoni Masana (2482 intervenciones) el 11/07/2018 07:37:00
Sin saber que hace y sin ver el libro no me atrevo a tocarlo.

En primer lugar te aconsejo que mires esta página he intentes aplicar sus propuestas

https://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros-excel/

Otras opciones:

El primer bucle es un poco más rápido así
1
2
3
4
5
6
con = 0
    With Hoja8
         For k = 3 To 700000
             If .Cells(k, 12) <> Empty Then con = con + 1
         Next
    End With

Para el segundo bucle. Un ejemplo Simple

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Private Sub CommandButton1_Click()
    Dim con As Integer
    Dim j As Integer
    Dim p As Integer
 
    con = 0
    With Hoja8
         For k = 3 To 700000
             If .Cells(k, 12) <> Empty Then con = con + 1
         Next
    End With
 
    p = 1
    For i = 1 To con Step 4
        ' ------- Primero lees los datos de la Hoja8 y lo guardas en variables o una tabla
 
        With Hoja8
             Campo_2_12 = .Cells(i + 2, 12)
             Campo_2_13 = .Cells(i + 2, 13)
             Campo_2_19 = .Cells(i + 2, 19)
             Campo_2_20 = .Cells(i + 2, 20)
             Campo_2_21 = .Cells(i + 2, 21)
             Campo_3_19 = .Cells(3 + i, 19)
             Campo_3_20 = .Cells(3 + i, 20)
             Campo_3_21 = .Cells(3 + i, 21)
             ....
        End With
 
        ' ------- Segundo haces los cálculos en la hoja 9
 
        With Hoja9
             ' ---&---  Combinacion1
 
            .Cells(1 + p, 1) = Campo_2_12
            .Cells(1 + p, 2) = Campo_2_13
            .Cells(1 + p, 3) = "COMB1"
            .Cells(1 + p, 4) = 1.4 * Campo_2_19
            .Cells(1 + p, 5) = 1.4 * Campo_2_20
            .Cells(1 + p, 6) = 1.4 * Campo_2_21
 
            ' ---&--- Combinacion2
 
             .Cells(2 + p, 1) = Campo_2_12
             .Cells(2 + p, 2) = Campo_2_13
             .Cells(2 + p, 3) = "COMB2"
             .Cells(2 + p, 4) = 1.2 * Campo_2_19) + 1.6 * Campo_3_19
             .Cells(2 + p, 5) = 1.2 * Campo_2_20) + 1.6 * Campo_3_20
             .Cells(2 + p, 6) = 1.2 * Campo_2_21) + 1.6 * Campo_3_21
 
        'Combinacion3
 
            ...
        End With
        p = p + 20
    Next
    MsgBox ("Proceso Terminado")
End Sub

Lo más correcto es definir todas las variables, pero si utilizas una TABLA sera mucho más simple de definir.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro muy lenta

Publicado por Antoni Masana (2482 intervenciones) el 11/07/2018 09:45:45
He realizado unos cambios.

Prueba esto haber que tal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Private Sub CommandButton1_Click()
    Dim Campo_2_12 As String, Campo_2_13 As String, Campo_2_19 As String, _
        Campo_2_19 As String, Campo_2_20 As String, Campo_2_20 As String, _
        Campo_2_21 As String, Campo_2_21 As String, Campo_3_19 As String, _
        Campo_3_19 As String, Campo_3_20 As String, Campo_3_20 As String, _
        Campo_3_21 As String, Campo_3_21 As String, Campo_4_19 As String, _
        Campo_4_20 As String, Campo_4_21 As String, Campo_5_19 As String, _
        Campo_5_20 As String, Campo_5_21 As String
 
    Dim Filas As Long, i as Long, Dest as Long
 
    Filas = 3
    With Hoja8
        While .Cells(Filas, 12) <> Empty: Filas = Filas + 1: Wend
    End With
 
    Dest = 1
    For i = 1 To Filas Step 4
        With Hoja8
            Campo_2_12 = .Cells(2 + i, 12)
            Campo_2_13 = .Cells(2 + i, 13)
 
            Campo_2_19 = .Cells(2 + i, 19):  Campo_3_19 = .Cells(3 + i, 19)
            Campo_2_20 = .Cells(2 + i, 20):  Campo_3_20 = .Cells(3 + i, 20)
            Campo_2_21 = .Cells(2 + i, 21):  Campo_3_21 = .Cells(3 + i, 21)
 
            Campo_4_19 = .Cells(4 + i, 19):  Campo_5_19 = .Cells(5 + i, 19)
            Campo_4_20 = .Cells(4 + i, 20):  Campo_5_20 = .Cells(5 + i, 20)
            Campo_4_21 = .Cells(4 + i, 21):  Campo_5_21 = .Cells(5 + i, 21)
        End With
 
        With Hoja9
            For b=1 to 20
                .Cells(b + Dest, 1) = Campo_2_12
                .Cells(b + Dest, 2) = Campo_2_13
                .Cells(b + Dest, 3) = "COMB" & b
            NEXT
 
            .Cells( 1 + Dest, 4) = 1.4 * Hoja8.Cells(2_19
            .Cells( 1 + Dest, 5) = 1.4 * Hoja8.Cells(2_20
            .Cells( 1 + Dest, 6) = 1.4 * Hoja8.Cells(2_21
 
            .Cells( 2 + Dest, 4) = 1.2 * Campo_2_19 + 1.6 * Campo_3_19
            .Cells( 2 + Dest, 5) = 1.2 * Campo_2_20 + 1.6 * Campo_3_20
            .Cells( 2 + Dest, 6) = 1.2 * Campo_2_21 + 1.6 * Campo_3_21
 
            .Cells( 3 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 3 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 3 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells( 4 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 4 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 4 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells( 5 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 5 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 5 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells( 6 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 6 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 6 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells( 7 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 7 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 7 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells( 8 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 8 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 8 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells( 9 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_4_19 + Campo_3_19
            .Cells( 9 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_4_20 + Campo_3_20
            .Cells( 9 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells(10 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_4_19 + Campo_3_19
            .Cells(10 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_4_20 + Campo_3_20
            .Cells(10 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_4_21 + Campo_3_21
 
            .Cells(11 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_5_19 + Campo_3_19
            .Cells(11 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_5_20 + Campo_3_20
            .Cells(11 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(12 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_5_19 + Campo_3_19
            .Cells(12 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_5_20 + Campo_3_20
            .Cells(12 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(13 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_5_19 + Campo_3_19
            .Cells(13 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_5_20 + Campo_3_20
            .Cells(13 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(14 + Dest, 4) = 1.2 * Campo_2_19 + 1.4 * Campo_5_19 + Campo_3_19
            .Cells(14 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_5_20 + Campo_3_20
            .Cells(14 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(15 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_5_19 + Campo_3_19
            .Cells(15 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_5_20 + Campo_3_20
            .Cells(15 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(16 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_5_19 + Campo_3_19
            .Cells(16 + Dest, 5) = 1.2 * Campo_2_20 + 1.4 * Campo_5_20 + Campo_3_20
            .Cells(16 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(17 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_5_19 + Campo_3_19
            .Cells(17 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_5_20 + Campo_3_20
            .Cells(17 + Dest, 6) = 1.2 * Campo_2_21 + 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(18 + Dest, 4) = 1.2 * Campo_2_19 - 1.4 * Campo_5_19 + Campo_3_19
            .Cells(18 + Dest, 5) = 1.2 * Campo_2_20 - 1.4 * Campo_5_20 + Campo_3_20
            .Cells(18 + Dest, 6) = 1.2 * Campo_2_21 - 1.4 * Campo_5_21 + Campo_3_21
 
            .Cells(19 + Dest, 4) = 0.9 * Campo_2_19 + 1.4 * Campo_4_19
            .Cells(19 + Dest, 5) = 0.9 * Campo_2_20 + 1.4 * Campo_4_20
            .Cells(19 + Dest, 6) = 0.9 * Campo_2_21 + 1.4 * Campo_4_21
 
            .Cells(20 + Dest, 4) = 0.9 * Campo_2_19 + 1.4 * Campo_4_19
            .Cells(20 + Dest, 5) = 0.9 * Campo_2_20 + 1.4 * Campo_4_20
            .Cells(20 + Dest, 6) = 0.9 * Campo_2_21 - 1.4 * Campo_4_21
        End With
 
        Dest = Dest + 20
    Next
    MsgBox ("Proceso Terminado")
End Sub

Saludo.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Macro muy lenta

Publicado por Vanessa (2 intervenciones) el 11/07/2018 13:13:19
Gracias, modificare mi código, había cambiado a algo parecido, lo guarde en una matriz y luego llame los resultados de la matriz y los pegue en la hoja 9


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar