Macro para filtrar y colocar datos en distintas hojas

Id. de artículo: 550376 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E10377
Expandir todo | Contraer todo

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      com6
    
    11-07-96   d7     m7    6    concepto7   t    cod7     no      com7
    
    12-08-96   d8     m8    7    concepto8   t    cod8     si      com8
    
    13-09-96   d9     m9    8    concepto9   t    cod9     si      com9
    
    15-10-96  d10    m10    9   concepto10   c   cod10     no      com10
    
    16-11-96  d11    m11   10   concepto11   t   cod11     si      com11
    
    18-12-96  d12    m12   11   concepto12   c   cod12     no      com12
    
    19-01-97  d13    m13   12   concepto13   c   cod13     si      com13
    
    20-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. Microsoft facilita 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ón de responsabilidad y, a efectos meramente enunciativos y no limitativos, las garantías legales mercantiles implícitas y/o la adecuación a un propósito o finalidad en particular.

Propiedades

Id. de artículo: 550376 - Última revisión: miércoles, 7 de mayo de 1997 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Excel 5.0 Standard Edition
Palabras clave: 
colocar dato excel filtro hoja KB550376
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.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com