2010-11-03 4 views
0

Я записал макрос для расчета ранжирования продуктов на ежемесячной основе - У меня есть ежемесячные данные о продажах этих продуктов за январь - YTD Я записал макрос, чтобы сортировать продажи по убыванию, и оценил им, однако, мне нужно зацикливать их на все месяцы, которые продолжают меняться, это может быть январь-февраль, январь-май или всякий раз, когда мне нужен этот отчет. Также можно изменить количество продуктов (строк).Looping a Macro

Так что мне нужно было записать макрос, который будет делать динамический vlookup.

Код, который я до сих пор занимает в рейтинге только месяц Январь - я не хочу индивидуально запускать макрос для каждого месяца, одним словом, можно зацикливать макрос для запуска на весь месяц .... также если новые продукты будут добавлены, может ли vlookup включить и новые продукты? Pls советует.

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 

Сообщите нам, если потребуется дополнительная информация. ТИА.

+0

Попробуйте обновленный код – Coronier

ответ

0

Во-первых, если вы хотите скопировать формулу в каждой ячейке столбца 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) 

вы можете объяснить структуру вашей рабочей книги/таблицы?

+0

благодарит за ответ - – Techie

+0

Я пытаюсь загрузить изображение книги, но это происходит навсегда .. У меня есть продукты вдоль рядов и ежемесячные цифры продаж вдоль столбцов .... Мне нужно ранжировать продукты за каждый месяц ... но количество месяцев, за которые должен выполняться этот отчет, может измениться. – Techie

+0

он может быть запущен в течение месяцев с января по февраль - март или январь - февраль - март .... - октябрь и т. Д. ... мне нужно перейти в последний столбец, заполненный и ранжированный до последнего месяца, для которого показатели продаж доступный. Также в случае добавления нового продукта ... я надеялся включить его автоматически в рейтинге. Любые мысли/предложения помогут. – Techie