Excel - formula en muchas celdas demora en processar

   
Vista:

formula en muchas celdas demora en processar

Publicado por andres (114 intervenciones) el 26/02/2009 04:35:59
Estimados:

Tengo una hoja de excel q se actualiza con un macro, la cuestion es que tengo un:
=INDICE(..COINCIDIR(...)) que me funciona como un BUSCARV

esa formula busca los nombres de los clientes por su codigo.
la hoja se va actualizando con cada vez mas codigos de clientes y la macro realiza el "BuscarV" a cada rato.. ahora son solo 1000 registros y se hace rapido.. pero aprox por dia se ingresan 1000 registros mas.. en 10 dias.. cuando la hoja tenga 10000 registros y el buscarV realize la tarea de buscar el nombre para cada cliente por su codigo.. me demora aprox 5 - 15 segundos.. mucho tiempo.

Alguna idea para solucionar este problema?.

Ademas!.. otra consulta.. como hago cuando se hace "doble clcik" al cuadrito negro de la esquina de una celda.. la formula se copia hasta la ultima celda.. cuando lo hago con macros me queda asi:
Range("F17").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A15000")

osea fijo.. el excel llena hasta la fila F15000 la formula.
Como lo hago para que sea con movimiento relaativo?.. presioné el boton de relatividad.. pero nada. Algnu consejo?

Saludos
Andres
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 JuanC

RE:formula en muchas celdas demora en processar

Publicado por JuanC (1052 intervenciones) el 26/02/2009 14:39:59
para optimizar el código hay que verlo completo... (5seg mucho tiempo?)

qué significa 'movimiento relativo'?

Saludos desde Baires, JuanC
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

RE:formula en muchas celdas demora en processar

Publicado por andres (114 intervenciones) el 26/02/2009 17:13:39
Estimado.. ahi más abajo te dejo el codigo. Para ejecutarlo completo.. hago correr Sub CAJA()
El unico problema es cuando:
Range("F17").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A15000")

El excel tiene q llenar desde la celda F17 .. hasta 15000 registros más abajo.. esa formula:

Range("F17").Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(INDEX(Base6!R3C2:R10000C2,MATCH(RC[-1],Base6!R3C1:R10000C1,0))),"""",INDEX(Base6!R3C2:R10000C2,MATCH(RC[-1],Base6!R3C1:R10000C1,0)))"

Esa parte es la q hace demorar a la macro 5 - 10 segundos.
espero q me puedas ayudar.
saludos, AM

Sub Caja()
Macro1
Macro2
Macro3
Macro4
Macro5
Macro6
Macro7
End Sub

Sub Macro1()
'
Rows("9:9").Select
Selection.Copy
Rows("16:16").Select
ActiveSheet.Paste
Range("A16").Select
Application.CutCopyMode = False
End Sub
Sub Macro2()
'
' Macro2 Macro
' Macro grabada el 25/02/2009 por Andres
'

'
Sheets("Base5").Select
Range("A4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Caja").Select
Range("B17").Select
ActiveSheet.Paste
Range("B17").Select
Application.CutCopyMode = False
End Sub
Sub Macro3()
'
' Macro3 Macro
' Macro grabada el 25/02/2009 por Andres
'

'
Range("F16").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Insert Shift:=xlToRight
Range("H16").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=-3
Selection.Insert Shift:=xlToRight
Range("K16").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Insert Shift:=xlToRight
Range("B16").Select
End Sub
Sub Macro4()
'
' Macro4 Macro
' Macro grabada el 25/02/2009 por Andres
'

'
Range("F16").Select
ActiveCell.FormulaR1C1 = "Paciente"
With ActiveCell.Characters(Start:=1, Length:=8).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 36
End With
Range("H16").Select
ActiveCell.FormulaR1C1 = "Concepto"
With ActiveCell.Characters(Start:=1, Length:=8).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 36
End With
Range("K16").Select
ActiveCell.FormulaR1C1 = "Total"
With ActiveCell.Characters(Start:=1, Length:=5).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 36
End With
Range("K17").Select
End Sub
Sub Macro5()
'
' Macro6 Macro
' Macro grabada el 25/02/2009 por Andres
'

'
Range("F17").Select
ActiveCell.FormulaR1C1 = _
"=+IF(ISERROR(INDEX(Base6!R3C2:R10000C2,MATCH(RC[-1],Base6!R3C1:R10000C1,0))),"""",INDEX(Base6!R3C2:R10000C2,MATCH(RC[-1],Base6!R3C1:R10000C1,0)))"
Range("H17").Select
ActiveCell.FormulaR1C1 = "=+MID(RC[-1],7,15)"
Range("K17").Select
ActiveCell.FormulaR1C1 = "=+IF(RC[-2]="""","""",RC[-2]*RC[-1])"
Range("K18").Select
End Sub
Sub Macro6()
'
' Macro6 Macro
' Macro grabada el 25/02/2009 por Andres
'

'
Range("F17").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A15000")
Range("H17").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A17000")
Range("K17").Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A17000")
Range("D17").Select
End Sub
Sub Macro7()
'
' Macro7 Macro
' Macro grabada el 25/02/2009 por Andres

Range("B16").Select
Range("B16:S17016").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B16").Select
Application.CutCopyMode = False
End Sub
Sub Macro10()
'
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 JuanC

RE:formula en muchas celdas demora en processar

Publicado por JuanC (1052 intervenciones) el 26/02/2009 21:32:11
para ser honesto yo haría todo desde el principio, y programando, no grabando
podrías usar

With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With

para intentar que tarde menos...
y no olvides luego de restaurar esos valores!
cualquier cosa, podés leer en la ayuda sobre cada línea

Saludos desde Baires, JuanC
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

RE:formula en muchas celdas demora en processar

Publicado por Zeus Alberto Páez Rentería (17 intervenciones) el 04/03/2009 17:44:32
Bueno al parecer utilices el codigo que utilices tarde o temprano sera muy lento porque los datos que ingresas diario son demasiados para una hoja de calculo, te recomiendo que utilices otra aplicacion como por ejemplo MS Access porque al parecer lo que necesitas es una base de datos y entonces si la controlas con Macros y SQL Y viertes los datos que necesites ver en excel, sera increiblemente mas rapida que la hoja de excel, ademas despues de un tiempo tu hoja de excel empezara a ser muy pesada, 10 k, 350 k, 500 k, 1 Mb, 2 Mb, 5 Mb 10 Mb, etc.
Independientemente del codigo.

Me temo decirle joven que se ha equivocado de aplicacion.

Ing. Zeus Alberto Páez Rentería

PD. Espero le sirva la informacion. :-)
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