Tabla de contenido
Cuando tenemos un gran conjunto de datos en nuestro libro de Excel, a veces es conveniente si podemos hacer un bucle a través de las filas para extraer los resultados específicos que queremos obtener. Implementación de VBA es el método más eficaz, rápido y seguro para ejecutar cualquier operación en Excel. En este artículo, le mostraremos 11 métodos diferentes sobre cómo recorrer las filas de una tabla en Excel con el botón Macro VBA .
Descargar el cuaderno de ejercicios
Puede descargar gratuitamente el libro de ejercicios de Excel desde aquí.
Recorrer filas de una tabla con VBA.xlsm11 Métodos con VBA para Recorrer Filas de Tabla en Excel
En esta sección aprenderá a recorrer las filas de una tabla con 11 métodos diferentes, como recorrer las filas hasta encontrar una celda en blanco, recorrer las filas hasta encontrar un valor específico, recorrer las filas y colorear una celda específica, etc. con VBA en Excel.
Arriba se muestra el conjunto de datos de ejemplo que seguirá este artículo para describir los métodos.
1. Incrustar VBA para recorrer cada celda de cada fila de una tabla por número de referencia de celda
Si desea recorrer cada celda de cada fila de una tabla en su hoja de cálculo Excel y obtenga el número de referencia de la celda como valor de retorno Siga los pasos que se indican a continuación.
Pasos:
- Al principio, pulse Alt + F11 en su teclado o vaya a la pestaña Desarrollador -> Visual Basic para abrir Editor de Visual Basic .
- A continuación, en la ventana de código emergente, en la barra de menús, haga clic en Insertar -> Módulo .
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsByRef() LastRow = Range("B" & Rows.Count).End(xlUp).Row FirstRow = 4 i = FirstRow FirstColumn = 2 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column Count = FirstColumn Do Until Count> LastColumn MsgBox "Actualmente iterando celda " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop End Sub
Su código ya está listo para ejecutarse.
- Ahora, pulse F5 en el teclado o, en la barra de menús, seleccione Run -> Run Sub/UserForm También puede hacer clic en el botón pequeño icono Play en la barra del submenú para ejecutar la macro.
- O para presenciar y comparar visualmente el conjunto de datos y el resultado, puede guardar el código y volver a la hoja de trabajo de interés.
- Desde ahí, puede hacer clic en Macros del Desarrollador ficha, seleccione el nombre de la macro, y haga clic en Ejecutar .
Una vez ejecutado el código con éxito, mira el gif de arriba para ver el resultado. Habrá una ventana emergente MsgBox mostrándote el número de referencia de cada celda de cada fila de la tabla de su hoja Excel.
Explicación del código VBA
LastRow = Range("B" & Rows.Count).End(xlUp).Row
Obtener el número de la última fila de la tabla buscando en la columna B.
PrimeraFila = 4
Pon la fila número 4, desde donde empiezan nuestros datos.
i = PrimeraFila
Para hacer un bucle desde la primera fila.
PrimeraColumna = 2
Coloca la columna número 2, de donde parten nuestros datos.
Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Comienza a recorrer las filas para obtener el último número de columna evaluando la fila actual hasta la última fila.
Count = FirstColumn Do Until Count> LastColumn
Incrementa el bucle de la columna desde la primera fila hasta la última.
MsgBox "Actualmente iterando celda " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop
Esta pieza de código funciona para procesar, incrementar después de cada iteración y mostrar el resultado del código.
Más información: Cómo Añadir una Nueva Fila Automáticamente en una Tabla Excel
2. Implementar VBA para recorrer cada celda de cada fila por valor
Si desea bucle a través de cada celda en cada fila de una tabla y lanzar el valor que reside en las células como el valor de retorno esta sección le ayudará a averiguar cómo hacerlo con VBA Excel.
Puede hacerlo con la función ListObject y con el DataBodyRange propiedad de VBA Le mostraremos el código de la macro con el objeto y la propiedad.
2.1. Con el ListObject
Los pasos para recorrer cada celda de cada fila de una tabla por valor de celda con el ListObject en VBA Excel.
Pasos:
- De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Luego, en la ventana de código, copia el siguiente código y pegar eso.
Sub LoopThroughRowsByList() Dim iListRow As ListRow Dim iCol As Range For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow End Sub
Su código ya está listo para ejecutarse.
- Después de eso, Ejecutar la macro como te mostramos en la sección anterior. El resultado se muestra en el gif de abajo.
Habrá un pop-up MsgBox mostrándote el valor que lleva cada celda de cada fila de la tabla de su hoja Excel.
Explicación del código VBA
Dim iListRow As ListRow Dim iCol As Range
Define las variables.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow
Este fragmento de código primero comienza a recorrer las filas de la tabla (" TblEstudiantes " es el nombre de nuestra tabla). Después introduce las columnas de cada fila. Después pasa el valor de la celda en MsgBox. Después pasa a la siguiente columna. Después de terminar de iterar por todas las columnas de una fila, entonces pasa a la siguiente fila y continúa el proceso de iteración hasta la última fila.
2.2. Con la propiedad DataBodyRange
Para ser más específico con los datos extraídos de la tabla, puede utilizar la función DataBodyRange propiedad de ListObject . DataBodyRange le arrojará el resultado que contiene el rango de la lista entre la fila de cabecera y la fila de inserción.
Los pasos para bucle a través de cada celda en cada fila de una tabla por valor de celda con el DataBodyRange en VBA Excel.
Pasos:
- Como ya se ha indicado, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Su código ya está listo para ejecutarse.
- Más tarde, Ejecutar la macro y mira el siguiente gif para ver la salida.
Habrá un pop-up MsgBox mostrándote el valor que lleva cada celda de cada fila de la tabla de su hoja Excel.
Explicación del código VBA
Dim iRange As Range
Define la variable.
For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange
Este fragmento de código primero comienza a recorrer las filas de la tabla (" TblStdnt " es el nombre de nuestra tabla) y devuelve un rango de valores excluyendo la fila de cabecera de la tabla. A continuación pasa el valor del rango en MsgBox. Después pasa a la siguiente fila para extraer el rango y continúa el proceso de iteración hasta la última fila.
3. Aplicar Macro VBA para Iterar Filas Concatenando Columnas en Excel
En esta sección se muestra cómo recorrer las filas de una tabla concatenando las columnas con la primera columna de su conjunto de datos en Excel.
Por ejemplo, para nuestro conjunto de datos, primero iteraremos a través de John en la celda B5 y 101 en la celda C5 concatenándolos y luego iterar a través de John en la celda B5 y 89 en la celda D5 concatenándolos a partir de fila 5 .
Le mostraremos cómo hacerlo con VBA en Excel.
Pasos:
- Al principio, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- En segundo lugar, en la ventana de código, copia el siguiente código y pegar eso.
Sub LoopThroughRowsByConcatenatingCol() Dim iRange As Range Dim iValue As String With ActiveSheet.ListObjects("TblConcatenate") For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With End Sub
Su código ya está listo para ejecutarse.
- Tercero, Ejecutar Mira el siguiente gif para ver el resultado.
Habrá un pop-up MsgBox mostrándote el valor concatenado de las celdas de la primera y la segunda columna ( John en la celda B5 de Colum B y 101 en la celda C5 de la columna C ) y luego el valor concatenado de las celdas de la primera y la tercera columna ( John en la celda B5 de Colum B y 89 en la celda D5 de la columna D ) de fila número 5 Y esta operación de concatenación continuará hasta llegar a la última fila de la tabla.
Explicación del código VBA
Dim iRange As Range Dim iValue As String
Define la variable.
Con ActiveSheet.ListObjects("TblConcatenate")
A continuación, el código selecciona la tabla de la hoja activa (" TblConcatenate " en el nombre de nuestra tabla).
For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value
A continuación, comienza a iterar cada fila excluyendo la cabecera de la columna. Si la iteración encuentra una coincidencia en el rango entre la cabecera de la columna y las filas, entonces almacena el valor en el campo iValor variable.
Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With
Si la condición anterior no se cumple, entonces el código arroja el valor en el MsgBox y termina la condición. Después de eso, pasa a hacer un bucle en otro rango y continúa iterando hasta la fila final. Una vez que llega a la fila final, la macro termina la ejecución del código.
4. Macro Embed para Iterar a través de Filas Concatenando Todas las Columnas de una Tabla en Excel
En esta sección aprenderemos a concatenar todas las columnas que contiene cada fila en el conjunto de datos con VBA en Excel.
Los pasos para ejecutarlo se muestran a continuación.
Pasos:
- En primer lugar, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsByConcatenatingAllCol() Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") Set iObj = iSheet.ListObjects("TblConcatenateAll") For Each iRow In iObj.ListRows For Each iCol In iObj.ListColumns iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub
Su código ya está listo para ejecutarse.
- Siguiente, Ejecutar el código de la macro.
Como se puede ver en el gif de arriba es que hay una ventana emergente MsgBox mostrándote el valor concatenado de todas las columnas que residen en cada fila de la tabla de su hoja de cálculo Excel.
Explicación del código VBA
Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String
Define las variables.
Set iSheet = EsteLibroDeTrabajo.HojasDeTrabajo("ConcatenandoTodoCol")
Establezca el nombre de la hoja con la que trabajaremos (" ConcatenarTodasCol " es el nombre de la hoja en el libro de trabajo).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Defina el nombre de la tabla con la que vamos a trabajar (" TblConcatenateAll " es el nombre de la tabla en nuestro conjunto de datos).
For Each iRow In iObj.ListRows
Inicia la iteración a través de cada fila de la tabla.
Para cada iCol en iObj.ListaColumnas
Inicia la iteración a través de cada columna de cada fila de la tabla.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow
Almacena el resultado intersecando los valores que lleva cada columna de cada fila. Después de escanear todas las columnas que residen en cada fila, pasa el resultado en el MsgBox. A continuación, inicia de nuevo el bucle en la siguiente fila y continúa el bucle hasta llegar a la última fila de la tabla.
Más información: Cómo ordenar varias columnas de una tabla con Excel VBA (2 métodos)
5. Detener la Iteración Si se Encuentra un Valor al Recorrer las Filas de una Tabla con una Macro VBA
Supongamos que desea bucle a través de las filas de la tabla tiene y detener el bucle cuando se encuentra un valor específico Puede hacerlo con un simple código de macro.
Aprendamos a hacerlo VBA en Excel.
Pasos:
- Al principio, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Luego, en la ventana de código, copia el siguiente código y pegar eso.
Sub LoopThroughRowsForValue() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData End Sub
Su código ya está listo para ejecutarse.
- Más tarde, Ejecutar la macro.
- Se iniciar el bucle y detenerlo cuando encuentre el valor específico (" Borde ") en el rango y lanza el resultan en la MsgBox .
Como se puede ver en la imagen de arriba, hay un MsgBox emergente que muestra el dirección de celda, $B$10 donde encontramos el valor especificado, " Borde " .
Explicación del código VBA
Dim iData As Range
Define la variable.
For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "El borde se encuentra en " & iData.Address End If Next iData
Este trozo de código está aquí para recorrer las filas de 1 a 15. Si encuentra la palabra específica " Borde "Continúa haciendo esto hasta que termina de escanear todos los datos de las filas 1 a 15 en busca de la palabra.
Read More: Cómo Insertar o Eliminar Filas y Columnas de una Tabla de Excel
6. VBA para recorrer cada fila y colorear un valor específico en Excel
¿Qué pasa si no quieres lanzar la dirección de la celda del valor especificado en el MsgBox? Podrías querer colorear la celda que contiene el valor que estás buscando.
Aprendamos a hacerlo con VBA macro.
Pasos:
- De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsAndColor() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData End Sub
Su código ya está listo para ejecutarse.
- Después de eso, Ejecutar la macro.
- Se iniciar el bucle y detenerlo cuando encuentre el valor específico (" Borde ") en el rango y colorear la celda con el ÍndiceColor que proporcionó en el código.
Como puede ver en la imagen superior, C ell B10 donde encontramos el valor especificado, " Borde " es de color después de la ejecución del código.
Explicación del código VBA
Dim iData As Range
Define la variable.
For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData
Este trozo de código está aquí para recorrer las filas de 1 a 15. Si encuentra la palabra específica " Borde "Continúa haciendo esto hasta que termina de escanear todos los datos de las filas 1 a 15 en busca de la palabra.
Más información: Cómo utilizar VLOOKUP matriz de tabla basada en el valor de la celda en Excel
Lecturas similares
- ¿Existe la función TABLE en Excel?
- Cómo convertir una tabla en una lista en Excel (3 formas rápidas)
- Convertir Rango a Tabla en Excel (5 Métodos Fáciles)
- Uso Eficaz de Fórmulas en una Tabla de Excel (Con 4 Ejemplos)
- Nombre de tabla Excel: Todo lo que necesita saber
7. Implementar VBA para Recorrer Cada Fila y Colorear Cada Fila Impar en Excel
En la sección anterior, hemos aprendido a colorear una celda que lleva un valor específico. En esta sección, aprenderemos a recorrer cada fila de una tabla y colorear todas las filas impares con VBA en Excel.
A continuación se describen los pasos para ejecutar el proceso.
Pasos:
- Como ya se ha indicado, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsAndColorOddRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With End Sub
Su código ya está listo para ejecutarse.
- Ahora, Ejecutar la macro y mira la siguiente imagen para ver la salida.
Todos los las filas impares se colorean después de recorrer todas las filas de la tabla de la hoja de cálculo.
Explicación del código VBA
Dim iRow As Long
Define la variable.
Con Range("B4").CurrentRegion
Define el rango con el que vamos a trabajar.
For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Esta parte del código se refiere a la iteración a través de todas las filas, a partir de la siguiente fila de la fila actual, B4 Si el mod de dividir los números de fila por 2 es igual al número de fila devuelto almacenado en un tipo entero, entonces este código colorea todas las filas que son extraídas por el cálculo con el Índice de Color proporcionado en el código. Continúa moviéndose a través de todas las filas hasta que alcanza el final del rango.
8. Implementar VBA para Recorrer Filas y Colorear Cada Fila Par en Excel
En la sección anterior, hemos aprendido a colorear cada fila impar de una tabla. En esta sección, aprenderemos a recorrer cada fila de una tabla y colorear cada fila par con macro VBA en Excel.
A continuación se exponen los pasos para ejecutar el proceso.
Pasos:
- En primer lugar, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsAndColorEvenRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With End Sub
Su código ya está listo para ejecutarse.
- Siguiente, Ejecutar la macro y mira la siguiente imagen para ver el resultado.
Todos los las filas pares se colorean después de recorrer todas las filas de la tabla de la hoja de cálculo.
Explicación del código VBA
Dim iRow As Long
Define la variable.
Con Range("B4").CurrentRegion
Define el rango con el que vamos a trabajar.
For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With
Este trozo de código comienza a iterar después de las tres filas desde la fila actual, B4 Primero la colorea, luego incrementa el número de filas en 2 y sigue coloreándola hasta que llega a la última fila del conjunto de datos.
9. Aplicar Macro para Iterar por Filas hasta Celda en Blanco en Excel
Si quieres que tu código funcione como lo hará bucle a través de todas las filas de la tabla y se detiene cuando llega a una celda en blanco Puede ejecutar esa tarea tanto con la función Bucle FOR y el Bucle Do-Until en Excel VBA .
9.1. Con bucle FOR
Pasos para bucle a través de las filas de una tabla hasta una celda en blanco con FOR Loop en VBA Excel.
Pasos:
- Al principio, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Después de eso, copia el siguiente código y pegar en la ventana de código.
Sub ForLoopThroughRowsUntilBlank() Dim x As Integer Application.ScreenUpdating = False NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count Range("B4").Select For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next Application.ScreenUpdating = True End Sub
Su código ya está listo para ejecutarse.
- Entonces, Ejecutar la macro y el resultado se muestra en el gif de abajo.
Después de ejecutar la macro empezó a recorrer todas las filas en la tabla y una vez alcanzado el celda en blanco, celda B8 es detuvo la iteración .
Explicación del código VBA
Dim x As Integer
Define la variable.
Aplicación.ScreenUpdating = False
Desactiva el evento de actualización de pantalla.
NumRows = Rango("B4", Rango("B4").End(xlDown)).Rows.Count
Almacena todas las filas a partir de Celda B4 hasta el último.
Rango("B4").Seleccionar
Seleccione Celda B4 .
For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next
Este trozo de código comienza a recorrer todas las filas. Cuando encuentra una celda vacía en una fila, la selecciona y continúa recorriendo las filas hasta llegar al final.
Aplicación.ScreenUpdating = True
Activa el evento de actualización de pantalla.
9.2. Con bucle Do-Until
Pasos para bucle a través de las filas hasta una celda en blanco con el bucle Do-Until en VBA se indican a continuación.
Pasos:
- En primer lugar, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Su código ya está listo para ejecutarse.
- Más tarde, Ejecutar El resultado se muestra en el siguiente gif.
Después de ejecutar la macro, se inició recorriendo todas las filas en la tabla y una vez alcanzado el celda en blanco, celda B8 es detuvo la iteración .
Explicación del código VBA
Rango("B4").Seleccionar
Seleccione la celda desde la que vamos a trabajar.
Do Hasta que IsEmpty(ActiveCell)
Inicia y continúa el bucle hasta encontrar una celda vacía.
ActiveCell.Offset(1, 0).Select Loop
Cuando se encuentre una celda vacía en una fila, selecciónela y detenga la iteración.
10. Macro VBA para Iterar a través de Filas Hasta Múltiples Celdas en Blanco en Excel
En la sección anterior, ha aprendido a detener el bucle cuando se encuentra una celda vacía. Pero, ¿qué ocurre si no desea detener la iteración hasta que se encuentren varias celdas vacías en lugar de una sola?
Los pasos para bucle a través de las filas hasta que múltiples celdas en blanco se encuentran en una tabla con VBA Excel se muestran a continuación.
Pasos:
- En primer lugar, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub
Su código ya está listo para ejecutarse.
- Ahora, Ejecutar la macro y ver el siguiente gif para la salida.
Después de ejecutar la macro no se detuvo en la primera celda en blanco, Celda B8 Se detuvo cuando encontró dos celdas en blanco consecutivas en la célula B16 .
Explicación del código VBA
Rango("B4").Seleccionar
Seleccione la celda desde la que vamos a trabajar.
Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))
Inicia y continúa el bucle hasta encontrar dos celdas vacías consecutivas.
ActiveCell.Offset(2, 0).Select Loop
Cuando se encuentran dos celdas vacías consecutivas, entonces se selecciona y se detiene la iteración.
11. Incrustar VBA para Recorrer Filas Concatenando Todas las Columnas Hasta que estén en Blanco en Excel
Esta sección le mostrará cómo recorrer todas las filas de una tabla y concatenar todas las columnas hasta que aparezca una celda en blanco se encuentra con VBA Excel.
Aprendamos a hacerlo con VBA en Excel.
Pasos:
- Al principio, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- Entonces, copia el siguiente código y pegar en la ventana de código.
Sub ConcatenatingAllColUntilBlank() Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String Set iSheet = Sheets("ConcatenatingAllColUntilBlank") iValue = Range("B4").CurrentRegion For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i End Sub
Su código ya está listo para ejecutarse.
- Más tarde, Ejecutar la macro y ver el siguiente gif para el resultado.
Como se puede ver en el gif de arriba es que hay una ventana emergente MsgBox mostrándote el valor concatenado de todas las columnas que residen en cada fila de la tabla de su hoja de cálculo Excel. Pero se detuvo al llegar a la celda en blanco .
Explicación del código VBA
Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String
Define las variables.
Set iSheet = Sheets("ConcatenatingAllColUntilBlank")
Establezca el nombre de la hoja con la que trabajaremos (" ConcatenarTodasColHastaBlanco " es el nombre de la hoja en el libro de trabajo).
iValor = Rango("B4").RegiónActual
Define el rango con el que vamos a trabajar.
For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i
Este fragmento de código inicia el bucle con la matriz. Continúa el bucle hasta que devuelve el subíndice mayor de la matriz y el límite inferior de la primera dimensión. A continuación, entra en la iteración de extracción del límite inferior de la segunda dimensión. Después, pasa todos los valores extraídos en la variable iResultado concatenándolas y lanzando el resultado en el MsgBox. Continúa haciendo esto hasta que encuentra una celda vacía.
Conclusión
Para concluir, este artículo le ha mostrado 11 métodos eficaces para recorrer las filas de una tabla en Excel con el botón Macro VBA Espero que este artículo le haya sido muy útil. No dude en plantear cualquier pregunta sobre el tema.