Eu tenho um banco de dados de produtos no Excel com várias centenas de entradas, cada uma com 1 a 3 "camadas" de preço: Standard, Deluxe e Premium. Cada camada tem seu próprio SKU (A, B ou C adicionado ao final do SKU base) e preço. Meus dados são assim:
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, ,
Como eu faria para que os dados ficassem assim:
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
Se ajudar, vou importar esses produtos para uma instalação do Magento.
Agradeço antecipadamente.
microsoft-excel
microsoft-excel-2010
csv
GreysonD
fonte
fonte
name1
edesc1
com preços diferentes para o preço A, preço B, preço C, etc.Respostas:
Essas tarefas geralmente são mais rápidas com o VBA. De fato, levei cerca de 10 minutos para configurá-lo.
Presumo que seus dados estejam na coluna A à coluna H.
Vá para
Excel » Developer » Visual Basic
»No painel esquerdo, abrasheet1
(ou) a planilha em que seus dados residem» Insira o código na janela direita »Execute o códigoCódigo VBA
Explicação
Minha intenção era manter o código o mais curto possível para explicá-lo melhor. Basicamente, usamos dois loops. O loop externo (
i
) é para as linhas e o loop interno (j
) para as colunas de preço.Nós usamos muito
cells(rowNumber,columnNumber)
para ler / gravar células.Linha 2 | Inicie um loop da linha 2 para sua última linha. Repetimos todas as linhas usadas
Linha 3 | Inicie um segundo loop de 0 a 2 (na verdade, são 3 loops, um para cada coluna Preço)
Linha 4 | Usamos esse loop interno para verificar os valores em nossa linha e coluna atuais Preço A, depois Preço B e no último loop Preço C. Se encontrarmos um valor na coluna Preço, continuaremos copiando as células. Se nenhum preço for inserido, nada faremos e passaremos para a próxima coluna Preço
Linha 5 | Contar um contador para saber quantas linhas já copiamos,
para sabermos depois de qual linha podemos copiar nossa linha atual
Linha 6 | Copie a coluna de nome
Linha 7 | Copie a coluna de descrição
Linha 8 | Copie a coluna Preço A ou B ou C, dependendo do loop interno que estamos atualmente
Linha 9 | Copie a coluna SKU A ou B ou C, dependendo do loop interno que atualmente somos
Captura de tela do resultado
fonte
Aqui está uma solução de função de planilha. As fórmulas são um pouco densas, portanto, esteja avisado, mas isso dará o que você deseja.
Passos:
Name
, insira uma referência direta à primeiraName
em seus dados. No seu exemplo, você digitaria=A2
onde A2 é o primeiro nome listado em seus dados. Na captura de tela de exemplo que forneci abaixo, esta fórmula entraA8
. Todas as fórmulas a seguir seguirão o layout usado na captura de tela. Obviamente, você precisará atualizar todas as referências de intervalo para corresponder às suas folhas.A9
) e, se o número de linhas já existentes na sua nova tabela corresponder a isso, ele passará para o próximo nome. Caso contrário, outra linha para o nome acima será adicionada.Preencha esta fórmula o quanto for necessário (até retornar um 0 em vez de um nome).
Description
digite a seguinte fórmula e preencha.SKU
, cole a fórmula a seguir na barra de fórmulas e pressione Ctrl+ Shift+ Enter. Esta é uma fórmula de matriz; se inserida corretamente, a fórmula aparecerá na barra de fórmulas entre colchetes. Preencha esta fórmula na sua tabela (cada instância também deve aparecer entre colchetes).Price
, cole a fórmula a seguir na barra de fórmulas e insira-a como uma fórmula de matriz (pressionando Ctrl+ Shift+ Enter). Preencha e isso deve completar sua tabela.fonte