Cómo consolidar varias filas en una columna

Cómo consolidar varias filas en una columna

Aquí está mi situación. Necesito tomar una lista de 38.000 cuentas de clientes y ordenar la información en una plantilla específica que pueda importar a nuestro nuevo sitio web. Sin embargo, la forma en que se presentan los datos lo hace difícil...

Cada dirección guardada para 1 cliente es una línea separada. Entonces, si tiene una dirección de facturación o envío diferente, serían 2 filas. A veces 3 filas. Necesito mover esas filas a una columna (Dirección 1, Dirección 2, etc.) debajo de 1 fila. Entonces, si el ClienteA tiene 3 direcciones guardadas, necesito tomar esas 3 filas y moverlas a 3 columnas de 1 fila. Espero que tenga sentido.

No tengo idea de si una fórmula, una tabla dinámica o VBA (sé tanto como Jon Snow en esta área) sería la mejor ruta a seguir. Probé tablas dinámicas, pero realmente no funciona. Estaba pensando que Index/Match podría ser la mejor solución: solo tendría que duplicar la fórmula para cada columna de Dirección, pero haría el trabajo. Sin embargo, no sé cómo puedo acomodar las múltiples filas.

A continuación se muestra un ejemplo de los datos que recibí. La línea 20 es la plantilla a la que necesito mover las filas. La columna g_user id es única por cliente, pero con varias filas de direcciones para un solo cliente, ese valor se duplicará en la hoja de cálculo. Lo mismo con client_no.

http://www.filedropper.com/excelhelp

O ver esta imagen

Por favor, avíseme si necesita más información e intentaré explicárselo más.

EDITAR: de la hoja de cálculo que publiqué, necesito tomar las filas 2 y 3 y mover la información de la dirección a nuevas columnas en la fila 1. Entonces, como la dirección tiene 2 columnas, la ciudad es 1, el estado es 1, el código postal es 1 y el país es 1, esto hace un total de 12 columnas de datos de esas 2 filas.

Respuesta1

  1. Seleccione una celda en blanco para colocar el contenido combinado, ingrese la fórmula =CONCATENAR(TRANSPOSE(B2:B19)) en la barra de fórmulas, luego debe seleccionar TRANSPONER(B2:B19) parte de la fórmula y luego presione la tecla F9. Puede ver que la fórmula ha cambiado como se muestra a continuación en las capturas de pantalla.

ingrese la descripción de la imagen aquí

  1. Elimine las llaves de la fórmula en la barra de fórmulas y luego presione la tecla Intro.

Respuesta2

Me gusta usar VBA para una tarea como esta. Suponiendo que tiene una ID de usuario única como se muestra en su tabla de muestra, podría hacer algo como esto:

Sub Addresses_To_Columns()

    Dim lastRow As Long
    Dim addressCount As Integer: addressCount = 0

    lastRow = Range("A" & Rows.Count).End(xlUp).Row

    For i = lastRow To 3 Step -1
        If Cells(i, 1).Value = Cells(i - 1, 1).Value Then
            addressCount = addressCount + 1
            Range(Cells(i - 1, 10), Cells(i - 1, (addressCount * 6) + 10)) = Range(Cells(i, 4), Cells(i, (addressCount * 6) + 4)).Value
            Rows(i).Delete
        Else
            addressCount = 0
        End If
    Next i

End Sub

Esto se convertirá en esto: ingrese la descripción de la imagen aquí

dentro de esto: ingrese la descripción de la imagen aquí

Este código deberá personalizarse para que se ajuste a su formato específico. También tenga en cuenta que esto se hizo rápidamente como prueba de concepto y es posible que falten algunas de las mejores prácticas comunes. Haga una copia de seguridad de sus datos antes de probar este código porque contiene un comando de eliminación para deshacerse de las filas duplicadas.

Respuesta3

Gracias a todos por la ayuda y sugerencias, pero lo resolví usando otro método.

Simplemente concatené un '-1', '-2', '-3' en los ID de cliente "únicos". Luego hice una BUSCARV para los valores únicos-1,-2,-3 para cada nueva columna que necesitaba agregar.

Esperemos que todo este tiempo y trabajo haya valido la pena por la reputación obtenida tras esta terrible experiencia.

Respuesta4

Solución muy sencilla, si he entendido correctamente tu consulta. Obviamente, primero asegúrese de hacer una copia de seguridad de la hoja de cálculo.

1) Agregue la cantidad requerida de columnas nuevas en el lugar correcto. Digamos que la nueva columna es N.

2) Supongo que la identificación del cliente está en la columna A y que las líneas con una nueva dirección para el mismo cliente tienen el mismo número en la columna A de esa fila. Y finalmente, suponiendo que la primera fila para cada cliente tiene los detalles más completos aparte de la dirección, es decir, el nombre, el teléfono, etc. (si no, utilice la clasificación, ordenando primero por número de cliente y luego por nombre).

3) En la celda N2 escriba esta fórmula:

=if(and(a3=a2,a1<>a2),h3,"")

donde H es la columna con las direcciones. Si la siguiente fila tiene el mismo número de cliente. (a3=a2), Y esta fila es un cliente nuevo, es decir, un número de cliente diferente al de la fila anterior (a1<>a2), ENTONCES esto tomará la dirección de la siguiente fila y la colocará en la fila principal para ese cliente. Repita para todas las demás partes de esa dirección para que toda la información se mueva. Es decir, la misma fórmula pero en O2 en lugar de N2 y haciendo referencia a i3 en lugar de h3, y así sucesivamente.

4) Haz una fórmula similar para la tercera dirección. Es decir, suponiendo que la columna X es la nueva columna para la tercera dirección, en tipo X2:

=if(and(a4=a2,a1<>a2),h4,"")

Básicamente lo mismo, solo que toma información de dos filas hacia abajo.

5) A estas alturas, todas las direcciones deberían estar en la fila "principal" de cada cliente. Ahora necesita copiar todas esas direcciones y pegarlas en las mismas ubicaciones, usando Pegado especial - valores. Esto eliminará las fórmulas y solo tendrá las direcciones como datos como si las hubiera escrito.

6) Ahora use ordenar por nombre de cliente para colocar todas las filas que tienen el nombre en blanco (porque son solo direcciones adicionales) en un solo lugar. Luego elimine todas esas filas, después de asegurarse de que todos los datos que necesitaba estén ahora en la fila correcta. Voilá

información relacionada