J'ai une base de données de produits dans Excel avec plusieurs centaines d'entrées, chacune ayant de 1 à 3 "niveaux" de prix: Standard, Deluxe et Premium. Chaque niveau a sa propre référence (A, B ou C ajoutée à la fin de la référence) et son prix. Mes données sont comme ceci:
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, ,
Comment pourrais-je obtenir les données pour qu'elles ressemblent à ceci:
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 cela peut aider, je vais importer ces produits dans une installation Magento.
Merci d'avance.
microsoft-excel
microsoft-excel-2010
csv
GreysonD
la source
la source
name1
etdesc1
mais avec des prix différents pour le prix A, le prix B, le prix C, etc.Réponses:
Ces tâches sont généralement plus rapides avec VBA. En fait, il m'a fallu environ 10 minutes pour le configurer.
Je suppose que vos données sont dans la colonne A à la colonne H.
Allez dans
Excel » Developer » Visual Basic
»Dans le volet gauche ouvrezsheet1
(ou) la feuille où se trouvent vos données» Insérez le code dans la fenêtre de droite »Exécutez le codeCode VBA
Explication
J'avais l'intention de garder le code aussi court que possible pour mieux l'expliquer. Fondamentalement, nous utilisons deux boucles. La boucle externe (
i
) est pour les lignes et la boucle interne (j
) pour les colonnes de prix.Nous utilisons beaucoup
cells(rowNumber,columnNumber)
pour lire / écrire des cellules.Ligne 2 | Commencez une boucle de la ligne 2 à votre dernière ligne. Nous parcourons chaque ligne utilisée
Ligne 3 | Démarrer une deuxième boucle de 0 à 2 (qui sont en fait 3 boucles, une pour chaque colonne de prix)
Ligne 4 | Nous utilisons cette boucle interne pour vérifier les valeurs dans notre ligne et colonne actuelles Prix A, puis Prix B et dans la dernière boucle Prix C. Si nous trouvons une valeur dans une colonne Prix, nous continuons et copions les cellules. Si aucun prix n'est inséré, nous ne faisons rien et passons à la colonne de prix suivante
Ligne 5 | Comptez un compteur pour savoir combien de lignes nous avons déjà copiées,
donc nous savons après quelle ligne nous pouvons copier notre ligne actuelle
Ligne 6 | Copiez la colonne du nom
Ligne 7 | Copiez la colonne de description
Ligne 8 | Copiez la colonne Prix A ou B ou C selon la boucle intérieure que nous sommes actuellement
Ligne 9 | Copiez la colonne SKU A ou B ou C selon la boucle interne que nous sommes actuellement
Capture d'écran du résultat
la source
Voici une solution de fonction de feuille de calcul. Les formules sont un peu denses, alors soyez averti, mais cela vous donnera ce que vous voulez.
Pas:
Name
, entrez une référence directe au premierName
de vos données. Dans votre exemple, vous devez saisir=A2
où A2 est le premier nom répertorié dans vos données. Dans l'exemple de capture d'écran que j'ai fourni ci-dessous, cette formule entre en jeuA8
. Toutes les formules suivantes suivront la disposition utilisée dans la capture d'écran. Vous devrez bien sûr mettre à jour toutes les références de gamme pour qu'elles correspondent à vos feuilles.A9
) et si le nombre de lignes déjà dans votre nouvelle table correspond à cela, il passe au nom suivant. Sinon, une autre ligne pour le nom ci-dessus sera ajoutée.Remplissez cette formule aussi loin que vous le souhaitez (jusqu'à ce qu'elle renvoie un 0 au lieu d'un nom).
Description
entrez la formule suivante et remplissez.SKU
, collez la formule suivante dans la barre de formule et appuyez sur Ctrl+ Shift+ Enter. Il s'agit d'une formule matricielle; si elle est saisie correctement, la formule apparaîtra dans la barre de formule entre crochets. Remplissez cette formule dans votre tableau (chaque occurrence doit également apparaître entre crochets).Price
, collez la formule suivante dans la barre de formule et entrez-la en tant que formule matricielle (en appuyant sur Ctrl+ Shift+ Enter). Remplissez et cela devrait compléter votre tableau.la source