Cómo recorrer una lista de datos en una hoja de cálculo mediante el uso de macros en Excel

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

Resumen
Cuando escribe una macro de Microsoft Visual Basic para Aplicaciones (VBA), quizás tenga que recorrer una lista de datos en una hoja de cálculo. Hay varios métodos para realizar esta tarea. La sección "Más información" de este artículo contiene información acerca de los métodos que puede utilizar para buscar en los tipos siguientes de listas:
  • Una lista que contiene un número conocido constante de filas.
  • Una lista dinámica, o una lista con un número desconocido de filas.
  • Una lista que contiene un registro concreto.
Más información
Microsoft proporciona ejemplos de programación solamente como ilustración, sin ninguna garantía ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este artículo se da por supuesto que ya conoce el lenguaje de programación que se muestra, así como las herramientas empleadas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas. En los ejemplos de código siguientes se supone que la lista tiene una fila de encabezado que empieza en la celda A1 y datos que empiezan en la celda A2.

Para buscar una lista con un número constante conocido de filas

Este código desplaza hacia abajo la columna A hasta el final de la lista:
   Sub Test1()      Dim x As Integer      ' Establecer numrows = número de filas de datos.      NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count      ' Seleccionar celda a1.      Range("A2").Select      ' Establecer valor "For" para que vaya de bucle el bucle durante "numrows" veces.      For x = 1 To NumRows         ' Inserte el código aquí.         ' Selecciona la celda 1 fila por debajo de la celda activa.         ActiveCell.Offset(1, 0).Select      Next   End Sub				

Para buscar una lista dinámica o una lista con un número desconocido de filas

Este código desplaza hacia abajo la columna A hasta el final de la lista. (En este código se supone que cada celda de la columna A contiene una entrada hasta el final).
   Sub Test2()      ' Seleccionar celda A2, *primera línea de datos*.      Range("A2").Select      ' Configurar el bucle Do para que se detenga al llegar a una celda vacía.      Do Until IsEmpty(ActiveCell)         ' Inserte el código aquí.         ' Bajar 1 fila de la ubicación actual.         ActiveCell.Offset(1, 0).Select      Loop   End Sub				
Nota: si hay celdas vacías en la columna A en los datos, modifique este código para tener en cuenta esta condición. Asegúrese de que las celdas vacías estén separadas una distancia constante. Por ejemplo, si una de cada dos celdas de la columna A está vacía (por ejemplo, esta situación puede producirse si cada 'registro' utiliza dos filas, estando la segunda fila sangrada una celda), este bucle se puede modificar de la manera siguiente:
      ' Configurar el bucle Do para que se detenga cuando se alcancen dos celdas consecutivas vacías.      Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))         ' Inserte el código aquí.         '         ' Bajar 2 filas de la ubicación actual.         ActiveCell.Offset(2, 0).Select      Loop				

Para buscar en una lista un registro concreto

Este código desplaza hacia abajo la columna A hasta el final de la lista:
   Sub Test3()      Dim x As String      Dim found As Boolean      ' Seleccionar primera línea de datos.      Range("A2").Select      ' Establecer un valor de búsqueda variable.      x = "test"      ' Establecer la variable booleana "found" en false.      found = False      ' Configurar el bucle Do para que se detenga al llegar a una celda vacía.      Do Until IsEmpty(ActiveCell)         ' Buscar valor de búsqueda en celda activa.         If ActiveCell.Value = x Then            found = TRUE            Exit Do         End If         ' Bajar 1 fila de la ubicación actual.         ActiveCell.Offset(1, 0).Select      Loop   ' Buscar el valor found.      If found = True Then         Msgbox "Valor encontrado en la celda " & ActiveCell.Address      Else         Msgbox "Valor no encontrado"      End If   End Sub				
xl2000 xl2002 xl2003 xl2007
Nota: es un artículo de "PUBLICACIÓN RÁPIDA" creado directamente por la organización de soporte técnico de Microsoft. La información aquí contenida se proporciona como está, como respuesta a problemas que han surgido. Como consecuencia de la rapidez con la que lo hemos puesto disponible, los materiales podrían incluir errores tipográficos y pueden ser revisados en cualquier momento sin previo aviso. Vea las Condiciones de uso para otras consideraciones
Propiedades

Id. de artículo: 299036 - Última revisión: 07/02/2013 13:06:00 - Revisión: 1.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2010

  • kbhowto kbprogramming KB299036
Comentarios