Tengo una base de datos de productos en Excel con varios cientos de entradas, cada una de las cuales tiene de 1 a 3 "niveles" de precios: Estándar, Deluxe y Premium. Cada nivel tiene su propio SKU (A, B o C agregado al final del SKU base) y precio. Mis datos son así:
Name, Description, Price A, Price B, Price C, SKU A, SKU B, SKU C
name1, desc1, 14.95, 19.95, , sku1A, sku1B,
name2, desc2, 4.95, 9.95, 12.95, sku2A, sku2B, sku2C
name3, desc3, 49.95, , , sku3A, ,
¿Cómo haría para que los datos se vean así?
Name, Description, SKU, Price
name1, desc1, sku1A, 14.95
name1, desc1, sku1B, 19.95
name2, desc2, sku2A, 4.95
name2, desc2, sku2B, 9.95
name2, desc2, sku2C, 12.95
name3, desc3, sku3A, 49.95
Si ayuda, voy a importar estos productos en una instalación de Magento.
Gracias por adelantado.
microsoft-excel
microsoft-excel-2010
csv
GreysonD
fuente
fuente
name1
ydesc1
con precios diferentes para el precio A, el precio B, el precio C, etc.Respuestas:
Esas tareas suelen ser más rápidas con VBA. De hecho, me llevó ~ 10 minutos configurarlo.
Supongo que sus datos están en la columna A a la columna H.
Vaya a
Excel » Developer » Visual Basic
»En el panel izquierdo, abrasheet1
(o) la hoja donde residen sus datos» Inserte el código en la ventana derecha »Ejecute el códigoCódigo VBA
Explicación
Tenía la intención de mantener el código lo más corto posible para explicarlo mejor. Básicamente usamos dos bucles. El bucle externo (
i
) es para las filas y el bucle interno (j
) para las columnas de precios.Usamos mucho
cells(rowNumber,columnNumber)
para leer / escribir celdas.Línea 2 | Comience un ciclo desde la fila 2 hasta su última fila. Repetimos cada fila usada
Línea 3 | Inicie un segundo ciclo de 0 a 2 (que en realidad son 3 ciclos, uno para cada columna de precio)
Línea 4 | Usamos este bucle interno para verificar los valores en nuestra fila y columna actuales Precio A, luego Precio B y en el último bucle Precio C. Si encontramos un valor en una columna Precio, continuamos y copiamos celdas. Si no se inserta ningún Precio, no hacemos nada y pasamos a la siguiente columna de Precio
Línea 5 | Cuente un contador para saber cuántas filas ya copiamos,
para saber después de qué fila podemos copiar nuestra fila actual
Línea 6 | Copie la columna del nombre
Línea 7 | Copie la columna de descripción
Línea 8 | Copie la columna Precio A o B o C dependiendo de qué bucle interno estemos actualmente
Línea 9 | Copie la columna SKU A o B o C dependiendo de qué bucle interno estemos actualmente
Captura de pantalla de resultados
fuente
Aquí hay una solución de función de hoja de trabajo. Las fórmulas son un poco densas, así que ten cuidado, pero esto te dará lo que quieres.
Pasos:
Name
, ingrese una referencia directa a la primeraName
en sus datos. En su ejemplo, ingresaría=A2
donde A2 es el primer nombre que figura en sus datos. En la captura de pantalla de ejemplo que proporcioné a continuación, entra esta fórmulaA8
. Todas las siguientes fórmulas seguirán el diseño utilizado en la captura de pantalla. Por supuesto, tendrá que actualizar todas las referencias de rango para que coincidan con sus hojas.A9
), y si el número de filas que ya están en su nueva tabla coincide con esto, entonces se pasa al siguiente nombre. De lo contrario, se agregará otra fila para el nombre anterior.Complete esta fórmula tanto como sea necesario (hasta que devuelva un 0 en lugar de un nombre).
Description
ingrese la siguiente fórmula y complete.SKU
, pegue la siguiente fórmula en la barra de fórmulas y presione Ctrl+ Shift+ Enter. Esta es una fórmula de matriz; Si se ingresa correctamente, la fórmula aparecerá en la barra de fórmulas entre corchetes. Complete esta fórmula en su tabla (cada instancia también debe aparecer entre llaves).Price
, pegue la siguiente fórmula en la barra de fórmulas e ingrésela como una fórmula de matriz (presionando Ctrl+ Shift+ Enter). Rellene, y esto debería completar su tabla.fuente