Convierta una fila en varias filas en Excel

Convierta una fila en varias filas en Excel

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 Chasta Rcontienen 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 Shasta 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:R4y 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

  1. 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 columnas S- AJ.
  2. Primero, queremos replicar cada fila de artículos Sheet118 Sheet2 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 de Sheet2!A2INT((ROW()-2)/18)+2Sheet2Sheet1Sheet2Sheet1& ""Sheet1Sheet1Mostrar en blanco al hacer referencia a una celda en blanco en Excel.

    Arrastra/rellena esto hacia la derecha, hasta la celda R2.

  3. Contraer .=INDEX(Sheet1!$S:$AJ, INT((ROW()-2)/18)+2, MOD(ROW()-2, 18)+1)Sheet2!S2Esto hace referencia a la misma fila Sheet1que la fórmula anterior, pero Sheet2!S2obtiene el valor de Sheet1!S2, Sheet2!S3obtiene el valor de Sheet1!T2, Sheet2!S4obtiene el valor de Sheet1!U2, etc. Esto mostrará 0s para los espacios en blanco.
  4. Seleccione la fila completa A2:S2y arrastre/rellénela para obtener todos sus datos. Esto deberá ser 18 veces más filas que las que tiene Sheet1; es decir, 18×900=16200.
  5. Copie todo Sheet2y pegue los valores.
  6. 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.

información relacionada