Excel: valores dinámicos en una celda (como valor separado por comas)


11

Excel: valores dinámicos en una celda (como valor separado por comas)

Tengo dos columnas de datos:

Proveedor1 | Producto1
Proveedor1 | Producto2
Proveedor1 | Producto4
Proveedor1 | Producto7
Proveedor2 | Producto3
Proveedor2 | Producto5

Quiero 'pivotar' alrededor del Proveedor, y dar la lista de productos en una sola celda, separados por comas, por ejemplo

Proveedor1 | Producto1, Producto2, Producto4, Producto7
Proveedor2 | Producto3, Producto5

Hay alrededor de 1000 proveedores y 0 <productos <= 10.

Mi solución actual implica el uso de tablas dinámicas, guardar como CSV, etc. y es muy complicado. Una solución que no sea VBA sería increíble.


Necesita una consulta SQL para hacerlo fácilmente. ¿Se puede exportar a una base de datos de alguna descripción?
Rhys Gibson

Respuestas:


23

Aquí hay una solución de tabla que no es VBA ni pivote que solo usa un par de fórmulas.

  1. Primero, usé el "Texto a columnas" para dividir sus datos en ese delimitador de "tubería" (la línea vertical) en 2 columnas; una columna "Proveedor" y una columna "Producto". Esos van en las columnas A y B, respectivamente. (Parece en su publicación que se combinan en una columna, así que primero los separo. No tendrá que hacer esto).

  2. En la columna C, que denominé como la columna "Concatenación", utilicé esta fórmula, comenzando en la celda C2 y copiando hasta abajo: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. En la columna D, que nombré como "SupplierChangesAtNextLine"? Usé esta fórmula (comenzando en D2 y copiando hasta el final): = IF (A2 = A3, "", "Modificado")

  4. Ahora debería poder filtrar en la columna D solo para los valores "modificados".

¡Buena caza!


1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. En col3 (significa C3) use la fórmula = IF (A2 = A1, B2 & "," & C1, B2) comenzando la celda C2 hacia adelante y arrástrela hacia abajo.
  2. en C4 (significa columna4) use la fórmula = IF (A2 = A3, "", "cambiado") comenzando la celda D2 hacia adelante y arrástrela hacia abajo.
  3. Filtre en Nuevo en C4 (significa col4) y obtendrá el resultado deseado.

0

Agregue la columna C como contador *: = COUNTIF (A $ 2: A $ 528, A2)
Agregue D como incremento * = IF (A2 = A1, D1 + 1, 1)
Agregue E para concatenar *: = IF (A1 = A2, E1 & "," & B2, B2)
Agregue F para mantener solo el último concat : = IF (AND (C2 = D2, E4 <> ""), E4, "")
Nota
agregue en la celda 2 y despliegue (o haga doble clic en la esquina derecha) para aplicar la fórmula a todas las celdas de la columna

copiar y pegar como valores en otra hoja, ordenar descendiendo por F, eliminar el resto


demasiado para hacer ... La solución de F106dart es más elegante.
ihightower
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.