Ayuda para Obtener resultados similares a un filtro avanzado, (pero sin utilizarlo)

Buen día para todos los presentes, ojala pudieran ayudarme con lo siguiente, resulta que tengo una hoja con aproximadamente 70,000 filas y 3 columnas, dentro de estas 70,000 filas (de la columna A) hay datos que se repiten, y necesito obtener los datos de esas repeticiones (de la columna C), he visto ejemplos de como obtener la información, pero de uno en uno (por decirlo así), pero quisiera una fórmula que pudiera devolverme los datos (de la columna C), de las repeticiones de la columna A ,, en la celda donde esté colocada la fórmula por ejemplo..

A B C D E F

1 CÓDIGO FECHA VALOR datos no repetidos VALORES

2 1 1-1-1 10 1 10@30@50

3 2 1-1-1 8 2 8@1

4 3 2-1-1 20 3 20

5 1 5-1-1 30

6 2 8-1-1 1

7 1 10-1-1 50

Se puede observar en este pequeño ejemplo que hay 6 columnas con encabezados y 7 filas con valores, en la Columna E están los códigos no repetidos de la columna A, porque en esos datos (código, como dice el encabezado de la columna A) necesito asociar los valores de la columna C, pero deseo que todos sean mostrados en una sola celda y separados (internamente) por algún carácter.. Que el resultado se muestre en la columna F (Valores), de la siguiente manera,,, (la arroba en medio de los valores es el carácter especial), Por favor alguna idea, ayuda?

Respuesta
1

No se si ya lo has solucionado, pero te pongo un código

Private Sub CommandButton1_Click()
Dim fila_datos_no_repetidos As Double
Dim i As Double
Dim num_filas As Double
Dim simbolo_entre_valores As String
' La hoja1 es donde están tus datos
num_filas = Hoja1.UsedRange.Row - 1 + Hoja1.UsedRange.Rows.Count
'Ordeno los datos según el código y la fecha
Range("A1:C" + CStr(num_filas)).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
Key2:=Range("B2"), Order2:=xlAscending
i = 3
fila_datos_no_repetidos = 2
simbolo_entre_valores = "@"
Range("E2") = Range("A2")
Range("F2") = Range("C2")
While (Range("A" + CStr(i)) <> "")
' Si es el mismo código solo se añade el valor a la celda de valores
If (Range("A" + CStr(i)) = Range("A" + CStr(i - 1))) Then
Range("F" + CStr(fila_datos_no_repetidos)) = Range("F" + CStr(fila_datos_no_repetidos)) + _
simbolo_entre_valores + _
Range("C" + CStr(i))
'Si el código cambia se añade el nuevo código y el 1er valor
Else
fila_datos_no_repetidos = fila_datos_no_repetidos + 1
Range("E" + CStr(fila_datos_no_repetidos)) = Range("A" + CStr(i))
Range("F" + CStr(fila_datos_no_repetidos)) = Range("C" + CStr(i))
End If
i = i + 1
Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas