2009-04-19 6 views
0

Je voudrais aider, si possible, avec un code qui procédez comme suit ...Ajouter ensemble - vba

Colonne B a 10 différentes variations de contenu qui sont toujours 10 caractères, à partir de la cellule B2.

Je voudrais faire les 10 variations différentes de contenu de la colonne B en-têtes de ligne 1 à partir de la colonne C.

Ensuite, je voudrais la macro à regarder le contenu dans la colonne A partir de A2. Ensuite, je veux utiliser le contenu de B2 pour différencier l'en-tête auquel appartient le contenu de A2 (respectivement dans la même ligne). Maintenant, au lieu de mettre le contenu réel de A2 sous l'en-tête, je veux mettre le numéro 1.

Maintenant, je veux continuer ce modèle pour chaque ligne dans la colonne A: B.

Lorsque les doublons se produisent, je veux supprimer la ligne le duplicata se produit et augmenter la fréquence d'origine par 1.

j'ai réalisé que je pouvais utiliser un tableau croisé dynamique mais je voudrais essayer d'utiliser une macro à la place .

+0

L'un ou l'autre de ces éléments a-t-il aidé? Que diriez-vous d'en marquer une comme réponse ou de reformuler votre question? –

Répondre

0

Savez-vous comment utiliser les boucles? Ma conjecture est oui, puisque vous êtes sur un site de programmation. Je me souviens d'avoir vu la plupart des tutoriels Excel VBA en utilisant Range (a: b) quand je faisais du VBA et ce n'était pas élégant à utiliser avec des boucles.

Vous pouvez à la place accéder à des cellules individus en utilisant des cellules (x, y) qui vous permet de spécifier une coordonnées x et y, donc A1 devient 1: 1 et A10 est 10: 1 etc.

Cela devrait vous aider Commencer. De là, vous devez penser logiquement et google ce que vous ne connaissez pas. faire une recherche google pour "doublons Excel gamme VBA" qui vous donnera des idées pour trouver des doublons dans une gamme.

La plupart de ce que vous demandez nécessite une logique simple ou un peu de googling. Essayez de le faire vous-même si vous êtes bloqué à des points spécifiques, alors vous pouvez poster ces problèmes spécifiques.

0

La première partie est facile, le code ci-dessous devrait faire ce que vous êtes après, Laissez-le tomber dans un module de code standard:

Private Sub transposeHeadings() 

    '//Use built-in filter function to get all unique entries from column B and paste to C1 
    Range("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("C1"),unique:=True 

    '//Copy this filtered list 
    Range("C2:C11").Copy 

    '//Paste into row 1, using transpose to change the rows into columns 
    Range("C1").PasteSpecial Paste:=xlPasteAll, Transpose:=True 

    '//Delete the temporary filtered list 
    Range("C2:C11").ClearContents 

    '//Remove the copy bounding box 
    Application.CutCopyMode = False 
End Sub

Notez que celui-ci utilise des plages codées en dur, vous pouvez utiliser le nom/dynamic ranges pour rendre cela un peu plus robuste. Je crains cependant que la seconde partie de votre question ne comporte trop d'inconnues pour tenter de fournir un peu de code, je ne suis même pas sûr de comprendre exactement ce que vous cherchez à faire. Comme le suggère Ankur, faites-vous plaisir et revenez avec les détails que vous rencontrez.

0

Je pense que je comprends.

Si les données se présente comme suit

BRAND ITEM 
Bic  Eraser 
Bic  Pencil 
Bic  Pencil 
Pentel Marker 
Sharpie Marker 
Sharpie Marker 

Le résultat final devrait ressembler à ceci?

BRAND ITEM Marker Eraser Pencil 
Bic  Eraser   1 
Bic  Pencil     2 
Pentel Marker 1 
Sharpie Marker 2 

Si oui, alors je vous suggère de trier par ordre "Marque" (key1) et "Item" (key2). De cette façon, les doublons seront côte à côte. Il serait probablement plus facile si vous avez fait une clé combinant "Marque" et "Article" ensemble, puis trier, comparer et compter en utilisant cette clé.

D'habitude, je préfère commencer par la dernière rangée lorsque je devrais supprimer des lignes. De cette façon, je peux utiliser une belle boucle. Huh? Essayez-le.