Macro para filtrar y colocar datos en distintas hojas

Este artículo se publicó anteriormente con el número E10377
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.
Resumen
El siguiente artículo muestra cómo filtrar los datos de una hoja según un criterio y colocar sólo algunos campos de los datos extraídos en otra hoja. Además, las columnas con los campos filtrados se colocan en la hoja de destino en orden distinto al de la hoja fuente.
Más información
El libro FILTRAR.XLS consta de las siguientes hojas:
  1. La hoja DATOS que contiene los datos fuente. El filtro se realizará según el contenido de la columna CASH/CARD. Separaremos en dos hojas los registros que contengan una C y los que tengan una T:
    FECHA   DIVISA  MONTO  USD  CONCEPTO   CODE CASH/CARD  JUSTIF   COMENT--------------------------------------------------------------------- 1-01-96   d1     m1    0    concepto1   c    cod1     si      com1 2-02-96   d2     m2    1    concepto2   c    cod2     no      com2 5-03-96   d3     m3    2    concepto3   t    cod3     si      com3 6-04-96   d4     m4    3    concepto4   t    cod4     si      com4 8-05-96   d5     m5    4    concepto5   c    cod5     no      com5 9-06-96   d6     m6    5    concepto6   t    cod6     si      com611-07-96   d7     m7    6    concepto7   t    cod7     no      com712-08-96   d8     m8    7    concepto8   t    cod8     si      com813-09-96   d9     m9    8    concepto9   t    cod9     si      com915-10-96  d10    m10    9   concepto10   c   cod10     no      com1016-11-96  d11    m11   10   concepto11   t   cod11     si      com1118-12-96  d12    m12   11   concepto12   c   cod12     no      com1219-01-97  d13    m13   12   concepto13   c   cod13     si      com1320-02-97  d14    m14   13   concepto14   c   cod11     si      com14
  2. La hoja TTT que incluirá los registros filtrados cuyo campo CASH/CARD contenga una T.
  3. La hoja CCC que incluirá los registros filtrados cuyo campo CASH/CARD contenga una C.
  4. La hoja de módulo FILTRAR_DATOS que contiene la macro (en español y en inglés).
La macro seleccionará, en primer lugar, los registros cuyo campo CASH/CARD contenga una C. Estos datos se pasarán a la hoja CCC. Sólo se desea pasar las columnas FECHA, CONCEPTO, CODE, DIVISA y MONTO, en ese orden.

Como resultado, la hoja CCC contendrá:
   FECHA     CONCEPTO   CODE   DIVISA  MONTO  -------------------------------------------   1-01-96    concepto1   cod1    d1     m1   2-02-96    concepto2   cod2    d2     m2   8-05-96    concepto5   cod5    d5     m5  15-10-96   concepto10  cod10   d10    m10  18-12-96   concepto12  cod12   d12    m12  19-01-97   concepto13  cod13   d13    m13  20-02-97   concepto14  cod14   d14    m14


Los mismos pasos se seguirán para recuperar los registros cuyo campo CASH/CARD contenga una T. Estos datos se pasarán a la hoja TTT.

Como resultado, la hoja TTT contendrá:
   FECHA     CONCEPTO   CODE   DIVISA  MONTO  -------------------------------------------   5-03-96   concepto3    cod3   d3     m3   6-04-96   concepto4    cod4   d4     m4   9-06-96   concepto6    cod6   d6     m6  11-07-96   concepto7    cod7   d7     m7  12-08-96   concepto8    cod8   d8     m8  13-09-96   concepto9    cod9   d9     m9  16-11-96  concepto11   cod11  d11   m11


PROCEDIMIENTO EN ESPAÑOL
   Proced Filtrar()      ' hace que no se visualice la ejecución de la macro      Aplicación.ActualizarPantalla = Falso      ' establece el filtro automático      Hojas("Datos").Seleccionar      Rango("A1").Seleccionar      Selección.FiltroAutomático      ' establece el criterio c      Selección.FiltroAutomático campo:=7; criterios1:="c"      ' ejecuta el procedimiento donde se copian los registros       ' seleccionados      CopiarRegistros      Hojas("ccc").Seleccionar      ' ejecuta el procedimiento donde se pegan los registros       ' seleccionados      PegarRegistros      Hojas("Datos").Seleccionar      Selección.ColumnaEntera.Oculto = Falso      Rango("A1").Seleccionar      ' establece el criterio t      Selección.FiltroAutomático campo:=7; criterios1:="t"      ' ejecuta el procedimiento donde se copian los registros       ' seleccionados      CopiarRegistros      Hojas("ttt").Seleccionar      ' ejecuta el procedimiento donde se pegan los registros         seleccionados      PegarRegistros      ' devuelve la hoja de datos a su estado original      Hojas("Datos").Seleccionar      Selección.ColumnaEntera.Oculto = Falso      Rango("A1").Seleccionar      Selección.FiltroAutomático   Fin Proced   Proced CopiarRegistros()      Rango("d:d").Seleccionar      Selección.ColumnaEntera.Oculto = Verdadero      Rango("G:G,H:H,I:I").Seleccionar      Rango("I1").Activar      Selección.ColumnaEntera.Oculto = Verdadero      Rango("B2").Seleccionar      Selección.RegiónActual.Seleccionar      Selección.Copiar   Fin Proced   ' se pegan los datos y se mueven las columnas a las posiciones    ' deseadas   Proced PegarRegistros()      Rango("A1").Seleccionar      HojaActiva.Pegar      Rango("b1").Seleccionar      Rango("b1"; CeldaActiva.Fin(xlAbajo).Dirección).Seleccionar      Selección.Cortar      Rango("f1").Seleccionar      HojaActiva.Pegar      Rango("d1").Seleccionar      Rango("d1"; CeldaActiva.Fin(xlAbajo).Dirección).Seleccionar      Selección.Cortar      Rango("b1").Seleccionar      HojaActiva.Pegar      Rango("c1").Seleccionar      Rango("c1"; CeldaActiva.Fin(xlAbajo).Dirección).Seleccionar      Selección.Cortar      Rango("g1").Seleccionar      HojaActiva.Pegar      Rango("e1").Seleccionar      Selección.RegiónActual.Seleccionar      Selección.Cortar      Rango("c1").Seleccionar      HojaActiva.Pegar   Fin Proced


PROCEDIMIENTO EN INGLÉS
Sub Filtrar()   'hace que no se visualice la ejecución de la macro   Application.ScreenUpdating = False   ' establece el filtro automático   Sheets("Datos").Select   Range("A1").Select   Selection.AutoFilter   ' establece el criterio c    Selection.AutoFilter Field:=7, Criteria1:="c"   ' ejecuta el procedimiento donde se copian los registros    ' seleccionados    CopiarRegistros    Sheets("ccc").Select   ' ejecuta el procedimiento donde se pegan los registros    ' seleccionados    PegarRegistros    Sheets("Datos").Select    Selection.EntireColumn.Hidden = False    Range("A1").Select   ' establece el criterio t    Selection.AutoFilter Field:=7, Criteria1:="t"   ' ejecuta el procedimiento donde se copian los registros    ' seleccionados     CopiarRegistros     Sheets("ttt").Select   ' ejecuta el procedimiento donde se pegan los registros    ' seleccionados   PegarRegistros   ' devuelve la hoja de datos a su estado original    Sheets("Datos").Select    Selection.EntireColumn.Hidden = False    Range("A1").Select    Selection.AutoFilter   End Sub   Sub CopiarRegistros()      Range("d:d").Select      Selection.EntireColumn.Hidden = True      Range("G:G,H:H,I:I").Select      Range("I1").Activate      Selection.EntireColumn.Hidden = True      Range("B2").Select      Selection.CurrentRegion.Select      Selection.Copy   End Sub   ' se pegan los datos y se mueven las columnas a las posiciones    ' deseadas   Sub PegarRegistros()      Range("A1").Select      ActiveSheet.Paste      Range("b1").Select      Range("b1", ActiveCell.End(xlDown).Address).Select      Selection.Cut      Range("f1").Select      ActiveSheet.Paste      Range("d1").Select      Range("d1", ActiveCell.End(xlDown).Address).Select      Selection.Cut      Range("b1").Select      ActiveSheet.Paste      Range("c1").Select      Range("c1", ActiveCell.End(xlDown).Address).Select      Selection.Cut      Range("g1").Select      ActiveSheet.Paste      Range("e1").Select      Selection.CurrentRegion.Select      Selection.Cut      Range("c1").Select      ActiveSheet.Paste   End Sub


PRECAUCIÓN: CUALQUIER UTILIZACIÓN POR SU PARTE DEL CÓDIGO O MACRO INCLUIDO EN ESTE ARTÍCULO SE HARÁ A SU CUENTA Y RIESGO. Microsoftfacilita este código o macro "tal cual" sin garantía de ningún tipo,ya sea explícita o implícita, incluyendo expresamente en tal exenciónde responsabilidad y, a efectos meramente enunciativos y no limitativos,las garantías legales mercantiles implícitas y/o la adecuación a unpropósito o finalidad en particular.
Propiedades

Id. de artículo: 550376 - Última revisión: 05/07/1997 10:30:00 - Revisión: 1.0

Microsoft Excel 5.0 Standard Edition

  • colocar dato excel filtro hoja KB550376
Comentarios