Hola a todos!
Hoy voy a publicar un post en VBA (con tanto TypeScript ya era hora!!). El trabajo de hoy será muy simple, os dejará en la imagen un resumen de lo que voy a hacer:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2020/07/REPETIR-CONTENIDO-DE-UNA-CELDA-TANTAS-VECES-COMO-HAYAMOS-INDICADO.jpg?resize=729%2C391&ssl=1)
Efectivamente, lo que necesitamos es repetir el contenido de la celda «A2» tantas veces como se indique en la celda «B2» y con el resultado de la columna «E».
Para realizar esta tarea he programado el siguiente código:
Option Explicit
Sub REPETIR_()
'Definimos variables
Dim i As Long, n As Long, j As Long
Dim Fin As Long, Cont As Long
Dim MiString As String, sCadena As String
Dim miArray As Variant
'Con la hoja1 contamos registros
With Sheets("Hoja1")
Fin = Application.CountA(.Range("A:A"))
'Añadimos título a la hoja 2
Sheets("Hoja2").Cells(1, 1) = "RESULTADO"
'Iniciamos bucle y recorremos hoja1
For i = 2 To Fin
'Borramos cadenas de texto creadas
MiString = vbNullString
'Iniciamos bucle por tantas veces como
'número indiquemos en la columna B
For n = 1 To .Cells(i, 2)
'Componemos string
MiString = MiString & "*" & .Cells(i, 1)
Next n
'eliminamos primer caracter
sCadena = Mid(MiString, 2, Len(MiString))
'dividimos la cadena según delimitador
miArray = Split(Trim(sCadena), "*")
Sheets("Hoja2").Select
'Pasamos la información desde el array a la hoja2
For j = 0 To UBound(miArray)
Cont = Application.CountA(Sheets("Hoja2").Range("A:A")) + 1
Sheets(2).Cells(Cont, 1) = miArray(j)
Next j
Next i
End With
End Sub
Y para nuestro ejemplo utilizaremos unas cuantas celdas:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2020/07/REPETIR-CONTENIDO-DE-UNA-CELDA-TANTAS-VECES-COMO-HAYAMOS-INDICADO_1.jpg?resize=797%2C412&ssl=1)
Y una vez ejecutada la macro, este es el resultado:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2020/07/REPETIR-CONTENIDO-DE-UNA-CELDA-TANTAS-VECES-COMO-HAYAMOS-INDICADO_2.jpg?resize=359%2C877&ssl=1)
Se trata de un código sencillo, en el que generamos una string con las repeticiones que pasaremos a un array y luego a la hoja a través de un loop.
Este tipo de trabajos se pueden realizar de formas diversas y con herramientas diversas. Este es el método que yo suelo usar y que espero que sea de mucha utilidad.
Descarga el archivo pulsando en:
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies
Hola,
Esta muy buena tu macro, pero queria consultarte que modificacion debo realizarle a esta macro para que repita la informacion contenida no en una columna sino en tres columna a la vez.
Es el mismo ejemplo solo que antes de la columna que indica las repeticiones de cada fila, se deben colocar dos columnas mas con informacion.
Si me puedes ayudar te lo agradeceria mucho. Saludos,
Una solución provisional es que en la primer columna concatenes el contenido de las otras columnas con un delimitados, ejemplo una | y luego generas la macro y el resultado lo pasas de nuevo a columnas.