Añadir una cadena de texto al contenido varias celdas de un rango, elegidas aleatoriamente.

Necesito saber cómo, mediante una macro, puedo añadir una cadena de texto como ésta: "x1, ab;001" a varias celdas de una columna A, que evidentemente tengan contenido, añadiéndolo justo desués del contenido que tenga la celda.

Concreto: Columna A, con celdas con contenido desde la A2 hasta la A... (puede variar). La macro debe recorrer las celdas con datos de la columna, e ir añadiendo la cadena x1, ab;001 a un número elegido previamente (por ejemplo a 6 celdas) y hacerlo aleatoriamente.

2 respuestas

Respuesta
2

Santiago aquí tienes la macro


Sub AñdirCadena()
' Marcial Castro'
'Cadena a añadir'
cad = "x1;ab;001"
'Columa a recorrer'
col = "A"
'Número de celdas a para cambiar'
numC = 6
'Número de filas con datos de la columa'
nf = Range(col & Rows.Count).End(xlUp).Row
'Número de la primera fila de datos'
pf = 2
'Colección para guardar los números aleatorios'
Dim numeros As New Collection, num As Variant
'Calculamos los x numeros aleatorios NO REPETIDOS
Do: On Error Resume Next
    num = Int((Rnd * nf) + pf)
    numeros.Add num, CStr(num)
Loop Until numeros.Count = numC
'Modificamos la filas'
For n = 1 To numC
    Range(col & numeros.Item(n)) = Range(col & numeros.Item(n)) & cad
Next
End Sub

No olvides valorar la respuesta.

Respuesta
1

Te anexo una macro

Sub aleatorio()
'Por.Dante Amor
    cad = "x1,ab;001"
    Do While n < 6
        f = Evaluate("=RANDBETWEEN(2," & Range("A" & Rows.Count).End(xlUp).Row & ")")
        If InStr(1, Cells(f, "A"), cad) = 0 Then
            Cells(f, "A") = Cells(f, "A") & cad
            n = n + 1
        End If
    Loop
End Sub

¡Gracias! 

Voy a probarla y te cuento.

Ya te valoro, no tienes precio.

Saludos.

Santiago.

Esta va genial. Integrada y realizada los cambio oportunos, va de lujo.

Lo dicho, eres un fiera ....

Gracias mil.

Santiago.

Sólo un detalle, si en la columna A tienes menos de 6 datos, la macro entraría en un loop, entonces lo resolvemos con esto:

Cambia esta línea

Do While n < 6 

Por esta

Do While n < 6 And Range("A" & Rows.Count).End(xlUp).Row > 6

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas