UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1RESUELTO Ayuda con Llenado de Lista Macros el 07/03/15, 04:12 pm

cavr7


Hola Maestros de Excel.

Tengo un problema espero me puedan ayudar u orientar como poder solucionarlo.
En una primer hoja de un archivo en Excel llamada "Datos Generales", llevo un registro de empleados no es una lista fija es acumulativa esta lista cuanta con 2 campos claves Fecha y Movimiento.
Es decir un empleado puede tener varios movimientos, y necesitamos que en la siguiente hoja llamada "Resumen", únicamente envie el listado de los trabajadores en base al numero de empleado que solo contenga un registro y el ultimo movimiento "Esto por la fecha mas reciente".

Ya he resuelto este problema con formulas de buscarv pero como reitero es un listado muy grande y colocar todas las formulas por ejemplo desde las celdas B2:BZ30000.
pero como indico hace muy complicada la operación del archivo y quería hacerlo con macros
creen ustedes que me puedan ayudar??

espero sus comentarios y/o orientaciones.

Gracias y Saludos
Rigoberto
Archivos
Personal.zip
No tienes los permisos para descargar los archivos.
(17 KB)

Igtelo


Hola Rigoberto.

Aquí va.

Se dice y escribe: Y/u orientaciones.
Archivos
cavr7-Personal.zip
No tienes los permisos para descargar los archivos.
(24 KB)

3RESUELTO Ayuda con Llenado de Lista Macros el 07/03/15, 11:13 pm

cavr7


Una disculpa por la falta de ortografía.

Ya trabaje en el archivo que me hiciste favor de ayudarme y agregue características adicionales espero le puedas dar una revisada para ver si es posible optimizar algo adicional.

También me hizo falta discriminar los empleados con baja para enviarlos a una hoja con Baja espero me puedas orientar nuevamente.

Te agradezco Igtelo

Saludos y Gracias
Rigoberto
Archivos
cavr7-Personal.zip
No tienes los permisos para descargar los archivos.
(22 KB)

Igtelo


Rigoberto.

Lo puedes hacer con el grabador de macros, es muy sencillo.

En la hoja Resumen aplica Autofiltro, filtras por baja y los copias a la hoja de bajas, después eliminas estos en tu hoja Resumen y listo.

Una vez hecha tu macro, amplía el rango para que no tengas problemas a futuro, supongo que tus datos se irán incrementando.

5RESUELTO Ayuda con Llenado de Lista Macros el 08/03/15, 01:47 am

cavr7


Gracias Igtelo,
Entonces el generador de macros si es confiable y no consume tanta memoria.
Saludos y Gracias nuevamente

6RESUELTO Ayuda para verificar Macro el 09/03/15, 09:41 pm

cavr7


Buenas tardes expongo a continuación mi modulo vba, por si a alguien le sirven algunos pasos.
Sr. Igtelo me puede apoyar nuevamente verificando mi modulo, ya realiza todo lo que necesito pero con 2000 registros el proceso se lleva alrededor de 8 minutos en promedio y como te comente la base cuenta con mas de 37mil registros.
espero me puedas apoyar a checar si hay algo malo o algún bucle mal diseñado
Saludos y Gracias


'Elimina Datos en Altas
    Sheets("Altas").Select
    Range("B3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.EntireRow.Delete
   
Sheets("PromoTecnicas").Select
Y = Hoja1.Range("db1048576").End(xlUp).Row
'Ordena
Range("B2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Range(Selection, Cells(ActiveCell.Row, 1)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range("B2:BU" & Y).Select
    ActiveWorkbook.Worksheets("Promotecnicas").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Promotecnicas").Sort.SortFields.Add Key:=Range( _
        "d3:d" & Y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Promotecnicas").Sort.SortFields.Add Key:=Range( _
        "g3:g" & Y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Promotecnicas").Sort
        .SetRange Range("B2:BU" & Y)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
    Range("C3").Select
       
'Extrae último movimiento y fecha del empleado y falta discriminar movimientos con Baja
[d3].Select
dato = ActiveCell
Application.ScreenUpdating = 0
Do Until Selection.Offset(-1) = ""
  If Selection <> dato Then
  Selection.Offset(-1, -1).Resize(, 21).Copy
  Sheets("Altas").Select
  [b5000].End(xlUp).Offset(1).PasteSpecial xlAll
  Application.CutCopyMode = 0
  Sheets(1).Select
  dato = ActiveCell
  Else
  Selection.Offset(1).Select
  End If
Loop
Application.ScreenUpdating = 1
Sheets("Altas").Select
[a1].Select

' Ordena nuevamente por Item la lista original
 Sheets("Promotecnicas").Select
 Range("B2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("B2:BU" & Y).Select
    ActiveWorkbook.Worksheets("Promotecnicas").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Promotecnicas").Sort.SortFields.Add Key:=Range( _
        "E3:E" & Y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Promotecnicas").Sort
        .SetRange Range("B2:BU" & Y)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("B2").Select
   
 'Esta macro elimina las bajas
Sheets("Altas").Select
    Range("B3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
  Range("B3").Select
Dim modCalc
  With Application
    modCalc = .Calculation
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    With ActiveSheet
     If .AutoFilterMode Then .Cells.AutoFilter
      .Range("b2").CurrentRegion.AutoFilter Field:=1, Criteria1:="Baja"
      With .AutoFilter.Range
        .Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete
      End With
   
      .Cells.AutoFilter
    End With
    .Calculation = modCalc
 End With
  
    Sheets("Promotecnicas").Select
    Range("B2").Select

Igtelo


Cavr.

Sube el archivo solo con 10 filas y lo comprimes, para que vea como trabaja.

De entrada te digo que el sort lo podemos hacer más corto... súbelo y vemos.

8RESUELTO Adjunto el archivo el 10/03/15, 03:10 am

cavr7


Adjunto el archivo para revisión
Esperando me puedas apoyar

Gracias
Rigoberto
Archivos
BaseImss_b.zip
No tienes los permisos para descargar los archivos.
(40 KB)

Igtelo


Hola Rigoberto.

Te va con 1,560 registros, en mi lap tardó 2 seg. En la hoja 1 te da los tiempos.
Ya te agregué la hoja de bajas.

Ve éste tutorial:

http://www.universoexcelforo.com/t1181-como-trabaja-una-macro-y-la-hoja-de-calculo-simultaneamente-videotutorial
Archivos
2Rigo de BaseImss_b.zip
No tienes los permisos para descargar los archivos.
(205 KB)

10RESUELTO Finalizado el 10/03/15, 02:51 pm

cavr7


Te agradezco mucho Igtelo
Voy a trabajar con este archivo y definitivamente se depuro  todo el código.
Gracias

11RESUELTO Re: Ayuda con Llenado de Lista Macros el 10/03/15, 03:14 pm

Igtelo


Podrías ponerlo como resuelto? Respeten las normas del foro...

12RESUELTO Resuelto el 10/03/15, 03:22 pm

cavr7


Gracias Igtelo

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.