En realidad necesitamos repetir filas, pero el número de repeticiones está parametrizado por otro campo. Partimos de un rango donde la primera columna es un valor que necesita ser repetido el número de filas que nos indica la segunda columna. Es una duda que planteaba un lector del blog:

Hola, a ver si me podéis ayudar: quiero repetir cada fila el número de veces que hay en cada celda que le corresponde. Es decir, tengo una variable Nombre (Columna A) y otra Frecuencia (Columna B).

NombreFrecuencia
A5
B8
C25
D12

La idea es repetir la fila A, 5 veces; la fila B, 8 veces y así sucesivamente. En realidad es lo inverso a crear una tabla de frecuencias desde una matriz de datos.

Tenía en la nevera un truco de Excel que puede hacer esta tarea y que también subiré al blog en los próximos días; en realidad esta entrada y la siguiente son modificaciones de un anterior truco Excel que subí al blog. En esta imagen podéis ver lo que hace:

excel_repite_filas

La macro que lo realiza es esta:

Sub rango_columnas2()

    Dim rango, celda As Variant
    Dim i As Long, j As Long, k As Long
    Dim col As Long

    rango = Application.InputBox(Prompt:="Seleccione el rango a repetir sin cabeceras", Type:=8)
    Set celda = Application.InputBox(Prompt:="Seleccione donde quiere poner los datos", Type:=8)

    ' Esta es la parte que permite ubicar la salida
    celda.Select
    k = 0

    ' Esto recorre el rango
    For i = 1 To UBound(rango, 1)
        For j = 1 To rango(i, 2)
            ActiveCell.Offset(k, 0).Value = rango(i, 1)
            k = k + 1
        Next j
    Next i

End Sub

Se ejecutan dos cuadros con el método Application.InputBox; en el primero seleccionamos el rango de datos sin cabeceras y en el segundo indicamos dónde queremos que salgan los datos. Se trata de recorrer el rango y pararse a repetir la primera columna del rango tantas veces como lo indica la segunda columna. Un proceso sencillo con Visual Basic pero que sería interesante replicar con funciones de Excel; en este caso, creo que INDIRECTO sería la más adecuada. En el siguiente enlace podéis descargar el ejemplo:

repite_filas

En siguientes fechas daré más vueltas a este bucle para realizar transposiciones de datos. Saludos.