¿Se puede mejorar un código en Excel?
El siguiente código se pone realmente muy lento cuando aumentan las filas de las hojas que lee
¿Alguien podría colaborar con una versión mejorada que sea más rápida?
Desde ya muchas gracias!
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If Sheets("HOJA1").AutoFilterMode = True Then Sheets("HOJA1").AutoFilterMode = False
Columns("A:O").Select
ActiveWorkbook.Worksheets("HOJA1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("HOJA1").Sort.SortFields.Add Key:=Range("B2:B936") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("HOJA1").Sort
.SetRange Range("A1:O936")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A2").Select
'ACTUALIZA FECHAS DE HOJA2 y HOJA3----------------------------------------------------------
Dim ultempresa, x, ultimaE, Y, W
ultempresa = Sheets("HOJA1").Range("C" & Rows.Count).End(xlUp).Row
ultimaE = Sheets("HOJA2").Range("C" & Rows.Count).End(xlUp).Row
ultimaC = Sheets("HOJA3").Range("C" & Rows.Count).End(xlUp).Row
For x = 2 To ultempresa
If Sheets("HOJA1").Range("O" & x).Value = "1100" Then
'---------------------------------------------------------------------------------------------------------
For Y = 3 To ultimaE
If Sheets("HOJA1").Range("C" & x).Value = Sheets("HOJA2").Range("K" & Y).Value Then
Sheets("HOJA2").Range("J" & Y).Value = Sheets("HOJA1").Range("B" & x).Value
End If
Next Y
End If
Next x
For x = 2 To ultimaE
If Sheets("HOJA1").Range("O" & x).Value = "1200" Then
'---------------------------------------------------------------------------------------------------------
For W = 3 To ultimaC
If Sheets("HOJA1").Range("C" & x).Value = Sheets("HOJA3").Range("K" & W).Value Then
Sheets("HOJA3").Range("J" & W).Value = Sheets("HOJA1").Range("B" & x).Value
End If
Next W
End If
Next x
Application.ScreenUpdating = True
End Sub
1 Respuesta
Respuesta de Dante Amor
2