Macro para pasar todos los datos de una columna por dos celdas

Supongamos que tengo 4 datos en la columna a: a1=123, a2=321, a3= 311, a4= 231. Lo que requiero es que cuando ejecute mi macro el dato a1 se copie temporalmente a la celda d1 y que mientras el dato a1 este en la celda d1, en la celda e1 se copien los datos a2, luego él se reemplace por el a3, y después por el a4. Cuando acabe esto, que en la celda d1 copie temporalmente el dato a2 y mientras esta esté allí en la celda e1 salga el dato a1, luego se reemplace por el dato a3 y luego por el a4, y así sucesivamente hasta que en las dos celdas d1 y e1 pasen todas las posibles combinaciones de los cuadro datos.

Básicamente es hacer una macro de combinaciones (según estadística) donde me pase todas las posibles combinaciones por dos celdas. ¿Por qué requiero esto? Porque ya tengo formuladas las celda d1 y e1 con unas condiciones según los datos que tengo en las columnas b y c, si en una de las combinaciones se cumple las condiciones requiero que se ejecute otra macro que ya tengo programada y funcionando con el nombre "copiar"

2 Respuestas

Respuesta
1

En estadísticas hay 3 formas posibles de arreglos

1.- Combinaciones donde son arreglos únicos e irrepetibles en tu caso seria 6 posibles combinaciones

2.- Permutaciones que son arreglos que permiten como mínimo 1 repetición en este caso con tus datos seria 12 permutaciones

3.- Arreglos básicamente esto permite que los datos se repitan constantemente con tus datos son 16 arreglos

La macro esta hecha para este ultimo caso espero sea lo que buscas.

Sub recorre()
Set datos = Range("a1").CurrentRegion
With datos
    f = .Rows.Count
    For i = 1 To f
        Range("d1") = .Cells(i, 1)
        For j = 1 To f
            Range("e1") = .Cells(j, 1)
        Next j
    Next i
End With
End Sub
Respuesta

No entendí si desde esta macro quieres ejecutar la macro "copiar", porque en tal caso tendrás que mencionar con cuáles combinaciones se debe ejecutar.

Te anexo la macro, según tu ejemplo, si en la celda D1 pones el dato "A1", entonces en la celda "E1" no debes poner el mismo dato "A1", si es así, prueba con la siguiente macro:

Sub Pasar_Datos()
'Por.Dante Amor
    Set rango = Range("A1:A4")
    For Each dato In rango
        Range("D1") = dato.Value
        For Each dato2 In rango
            If dato.Address <> dato2.Address Then Range("E1") = dato2.Value
        Next
    Next
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Feliz Año 2018

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas