Excelmacros生成单个随机输出

我logging了一个macros,通过一堆格式化和拼接数据。 它基本上格式化数据页面,然后拼接成几个月。 数据大致如下所示:

Column A ... Column D ... Column H Column I Jan Feb ... Nov Dec - 00645 - budget 45.2 32.8 -15.0 100.00 

基本上它填满了所有A列的条目(所有条目都是“LINE”),重新命名列B,C,D,H和I上的标题,然后复制列AJ并将其移动到仅为特定月份创build的标签,然后删除J列,所以下个月将一直在J列,并继续重复,直到所有的月份都被parsing出来。 它是一个非常容易的macros,主要logging,但其performance奇怪。

问题是,一旦运行,它随机将只应在列A(“行”)的值input到文件中其他位置的单个单元格。 它似乎是半随机的细胞。 如果您从文件A中input数据,无论您运行多less次“LINE”都会显示在同一个单元格中。 但对于文件B,C,D等,这将是一个不同的单元格。 与其他单元格(相同的条目,相同的格式等)相比,它在单元格中没有什么本质上的不同。 我不知道为什么它这样做。 以下是我的代码:

 Sub Format_Upload() Format_Upload Macro ActiveCell.FormulaR1C1 = "LINE" LastRow = Range("B" & Rows.Count).End(xlUp).Row Range("A2").Copy Range("A2").Resize(LastRow - 1) Range("B1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "Dept ID" Range("C1").Select ActiveCell.FormulaR1C1 = "MSUPLOAD1" Range("D1").Select ActiveCell.FormulaR1C1 = "01/01/14" Range("I1").Select ActiveCell.FormulaR1C1 = "01/01/14" Range("D1").Select Selection.NumberFormat = "mm/dd/yy;@" Range("I1").Select Selection.NumberFormat = "mm/dd/yy;@" Cells.Select With Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("J:U").Select With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Selection.NumberFormat = "0.00" Columns("A:J").Select Selection.Copy Sheets("JAN").Select Range("A1").Select ActiveSheet.Paste Sheets("Data").Select Columns("J:J").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("FEB").Select Range("A1").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "2/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "2/1/2014" Range("H1").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("MAR").Select Range("A1").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "3/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "3/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("APR").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "4/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "4/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Range("J1").Activate Selection.Copy Sheets("MAY").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "5/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "5/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("JUN").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "6/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "6/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("JUL").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "7/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("AUG").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "8/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "8/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Copy Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("SEP").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "9/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "9/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Selection.Copy Sheets("OCT").Select Sheets("Data").Select Columns("A:J").Select Application.CutCopyMode = False Selection.Copy Sheets("OCT").Select Range("A1").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "10/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "10/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("NOV").Select ActiveSheet.Paste Range("D1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "11/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "11/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Columns("A:J").Select Selection.Copy Sheets("DEC").Select ActiveSheet.Paste Columns("D:D").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "12/1/2014" Range("I1").Select ActiveCell.FormulaR1C1 = "12/1/2014" Range("I2").Select Sheets("Data").Select Columns("J:J").Select Selection.Delete Shift:=xlToLeft Sheets("FEB").Select ActiveCell.FormulaR1C1 = "MSFEB" Sheets("MAR").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSMAR" Sheets("APR").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSAPR" Sheets("MAY").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSMAY" Sheets("JUN").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSJUN" Sheets("JUL").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSJUL" Sheets("AUG").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSAUG" Sheets("SEP").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSSEP" Sheets("OCT").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSOCT" Sheets("NOV").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSNOV" Sheets("DEC").Select Range("H1").Select ActiveCell.FormulaR1C1 = "MSDEC" Range("H2").Select End Sub 

我在代码中没有看到任何解释这个exception的东西。 任何想法是什么导致这个问题? “

编辑:奇怪的单元格总是出现在第一个选项卡(名为“JAN”),但其位置不同。

ActiveCell.FormulaR1C1 = "LINE"

在运行之前,将“LINE”放入您select的任何单元格中。

改变到别的东西