Tengo varios artículos que están disponibles en varios centros de distribución (es decir, una relación de muchos a muchos). Actualmente hay una fila por artículo, con una columna para cada centro de distribución. Una celda en la fila del artículo Xy la columna para centro de distribución YEstá marcado con el código del centro de distribución.Ysi artículo Xestá disponible allí y en blanco en caso contrario. Un artículo con múltiples centros de distribución tendrá múltiples códigos de centro de distribución (en sus respectivas columnas). Entonces la hoja actual se ve así:
| A | B |*| S-AJ |
1 | ID # | Description |…| Distribution Centers |
2 | 17 | Ginkgo Biloba |…| | | | | | | SE |
3 | 42 | Ginseng |…| | MP | MS | | NW | | |
︙
Las columnas C
hasta R
contienen otros atributos de los artículos, como el código UPC, el costo y el precio, que no son relevantes para esta pregunta. Mi hoja real tiene 18 centros de distribución, abarcando columnas S
hasta AJ
; Lo reduje para que el ejemplo encajara en la ventana de Stack Exchange.
Necesito tener una única columna del centro de distribución, con un único código de distribución por fila, y luego duplicar las filas según sea necesario para los artículos que actualmente contienen varios códigos. El resultado debería verse así:
| A | B |*| S |
1 | ID # | Description |…| DC |
2 | 17 | Ginkgo Biloba |…| SE |
3 | 42 | Ginseng |…| MP |
4 | 42 | Ginseng |…| MS |
5 | 42 | Ginseng |…| NW |
︙
donde las celdas A3:R3
, A4:R4
y A5:R5
, contienen la misma información.
La única forma que se me ocurre de hacer esto, que llevaría mucho tiempo, sería copiar el número de artículo en varias filas; y en la columna que tiene el código de distribución cambiaría código por el artículo que está disponible en cada centro de distribución. Haré esto por 900 artículos. ¿Hay alguna forma más fácil de hacer esto?
Respuesta1
- Crea una nueva hoja. Copie las filas del encabezado, los anchos de las columnas y los formatos, excepto que no copie Columnas
T
-AJ
. Puede que sea más fácil copiar la hoja completa, luego eliminar todas las filas excepto 1 y separar las columnasS
-AJ
. Primero, queremos replicar cada fila de artículos
Sheet1
18Sheet2
veces, una para cada centro de distribución. Escribir .=INDEX(Sheet1!A:A, INT((ROW()-2)/18)+2, 1) & ""
asigna las filas 2 a 19 a la fila 2 , las filas 20 a 37 a la fila 3 , etc. Esto hace que Excel muestre un espacio en blanco al hacer referencia a una celda en blanco en . Si no tiene espacios en blanco , puede omitirlo. Si no le gusta esta solución en particular, puede utilizar una de las otras soluciones deSheet2!A2
INT((ROW()-2)/18)+2
Sheet2
Sheet1
Sheet2
Sheet1
& ""
Sheet1
Sheet1
Mostrar en blanco al hacer referencia a una celda en blanco en Excel.Arrastra/rellena esto hacia la derecha, hasta la celda
R2
.- Contraer .
=INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1)
Sheet2!S2
Esto hace referencia a la misma filaSheet1
que la fórmula anterior, peroSheet2!S2
obtiene el valor deSheet1!S2
,Sheet2!S3
obtiene el valor deSheet1!T2
,Sheet2!S4
obtiene el valor deSheet1!U2
, etc. Esto mostrará0
s para los espacios en blanco. - Seleccione la fila completa
A2:S2
y arrastre/rellénela para obtener todos sus datos. Esto deberá ser 18 veces más filas que las que tieneSheet1
; es decir, 18×900=16200. - Copie todo
Sheet2
y pegue los valores. - Filtrar columna
S
. Muestra solo los ceros. Elimine todas las filas (excepto la fila 1). Retire el filtro.
Hecho.
Respuesta2
Solución más fácil pero con mayor esfuerzo manual: copie los identificadores únicos x número de tiempo (donde x es el número de columnas que se convertirán en filas) para cada iteración, aplique vlookup con la columna que se convertirá en filas cada vez.