循环宏

时间:2010-11-03 15:43:51

标签: excel vba

我记录了一个宏来计算每月产品的排名 - 我有Jan-YTD这些产品的月度销售数据 我记录了一个宏来按照desc顺序对销售进行排序,然后对它们进行排序,但是我需要将它们循环到所有月份,不断改变它可能是1月到2月,1月到5月或每当我需要这个报告时。 产品(行)的数量也可能会发生变化。

所以我需要录制一个动态vlookup的宏。

我到目前为止的代码只是Jan的月份排名 - 我不想单独运行每个月的宏,简而言之就是可以将宏循环运行整个月....也可以添加了新产品,vlookup还可以包含新产品吗? 请指教。

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

如果需要任何进一步的信息,请告诉我。 TIA。

1 个答案:

答案 0 :(得分: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)

你能解释一下你的工作簿/表的结构吗?