2010-11-03 6 views
0

J'ai enregistré une macro pour calculer le classement des produits sur une base mensuelle - J'ai les chiffres de vente mensuels de ces produits pour Jan - YTD J'ai enregistré une macro pour trier les ventes dans l'ordre décroissant, et classé eux cependant je dois les boucler pour tous les mois, qui continue à changer il pourrait être Jan-Fév, Jan-Mai ou chaque fois que j'ai besoin de ce rapport. Le nombre de produits (lignes) peut également changer.Boucle une macro

Donc, j'avais besoin d'enregistrer une macro qui ferait une vlookup dynamique. Code que j'ai jusqu'ici est le classement pour le mois de Jan seulement - je ne veux pas courir individuellement la macro pour chaque mois, en bref est-il possible de boucler la macro pour fonctionner pendant tout le mois .... aussi Si de nouveaux produits sont ajoutés, vlookup peut-il également inclure les nouveaux produits? Pls conseiller.

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!RC[-1]:R[6]C[4],2)" 
    Range("B3").Select 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!R3C1:R9C6,2)" 
    Range("B3").Select 
    Selection.Copy 
    Range("B4:B9").Select 
    ActiveSheet.Paste 
    Range("B2").Select 
    Application.CutCopyMode = False 
    Selection.Sort Key1:=Range("B3"), Order1:=xlDescending, Header:=xlGuess, _ 
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 
    Range("C3").Select 
    ActiveCell.FormulaR1C1 = "1" 
    Range("C4").Select 
    ActiveCell.FormulaR1C1 = "2" 
    Range("C5").Select 
    ActiveCell.FormulaR1C1 = "3" 
    Range("C3:C5").Select 
    Selection.AutoFill Destination:=Range("C3:C9"), Type:=xlFillDefault 
    Range("C3:C9").Select 
    Sheets("Sheet3").Select 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!RC[-1]:R[6]C[1],3,0)" 
    Range("B3").Select 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!R3C1:R9C3,3,0)" 
    Range("B3").Select 
    Selection.Copy 
    Range("B4:B9").Select 
    ActiveSheet.Paste 

Veuillez me contacter si d'autres informations sont requises. TIA.

+0

Essayez mon code mis à jour – Coronier

Répondre

0

Tout d'abord, si vous voulez copier votre formule dans chaque cellule de la colonne B

Range("B3").Select 
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet1!R3C1:R9C6,2)" 
lastRow = Cells(Application.Rows.Count, 2).End(xlUp).Row 
Selection.AutoFill Destination:=Range("B:B" & lastRow) 

pouvez-vous expliquer la structure de votre classeur/table?

+0

merci pour la réponse - – Techie

+0

J'essaie de télécharger une image du classeur, mais il prend une éternité .. j'ai des produits le long des lignes et des chiffres de vente mensuels le long des colonnes .... Je dois classer les produits pour chaque mois ... mais le nombre de mois pour lesquels ce rapport doit être exécuté pourrait changer. – Techie

+0

il pourrait être couru pour les mois de Jan - Fev - Mars ou Jan - Fev - Mars .... - Oct etc ... je dois aller à la dernière colonne remplie et le rang jusqu'au dernier mois pour lequel les chiffres de ventes sont disponible. Aussi, au cas où un nouveau produit est ajouté ... j'espérais l'inclure automatiquement dans le classement. Toutes les pensées/suggestions aideraient. – Techie