
Tengo una hoja de cálculo en la que estoy trabajando. Dentro de esta hoja hay dos columnas. La columna A es el identificador único y la columna B tiene números de identificación. Un identificador podría tener hasta 1 o 5 ID. Lo que necesito hacer es mover todas las identificaciones a una fila manteniendo el identificador que he adjuntado con una imagen de antes y después.
Estoy seguro de que existe alguna fórmula que puede hacer esto, espero que puedas ayudar.
Antes
Después
Respuesta1
Coloque esta macro en un módulo estándar y ejecútela:
Sub Macro1()
Dim i As Long, j As Long, k As Long, Na As Long
Dim v As String, Nc As Long
Columns("A:A").Copy Columns("C:C")
ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlYes
Na = Cells(Rows.Count, "A").End(xlUp).Row
Nc = Cells(Rows.Count, "C").End(xlUp).Row
For i = 2 To Nc
k = 4
v = Cells(i, "C").Value
For j = 2 To Na
If v = Cells(j, 1).Value Then
Cells(i, k) = Cells(j, 2).Value
k = k + 1
End If
Next j
Next i
End Sub
Aquí hay algunos resultados de muestra:
Como puede ver, asumimos que las entradas están en columnas.AyB. Las salidas van en las columnas al lado de ellas. Al código no le importa si los datos están ordenados o no.
Respuesta2
Esto lo hago cada cierto tiempo, pero sin VBA y en un par de pasos:
1) primero ordene los datos por ID para que estén agrupados
2) luego, en C2: =if(A1=A2,if(A2=A3,B1&","&B2, "Último",&B1&","&B2),B2)
3) ejecuta eso
4) copie y pegue la columna C como valores (digamos en la columna D) para deshacerse de la fórmula
5) ordenar por columna D, eliminar todo lo que no diga "último"
6) seleccione la columna D, pestaña Datos> Texto a columnas> delimitado> seleccione comas> Aceptar
Ahora todo está dividido en columnas únicas y están en la misma línea que el ID. Puede eliminar las columnas B y C ya que ya no son necesarias.