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

Seleccione idioma Seleccione idioma
Id. de artículo: 299036 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

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
				
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: martes, 2 de julio de 2013 - Versión: 1.0
La información de este artículo se refiere a:
  • 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
Palabras clave: 
kbhowto kbprogramming KB299036

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