macros查找最后一行并添加数据

每个星期我都会为一系列项目提取数据并生成一个数据透视表。 几周之内,这些项目中的一个或多个项目不存在数据。 在这种情况下,该项目不会出现在报告中。

为了避免手动检查没有意外从数据透视表中排除项目,我想手动添加“虚拟”项目在数据透视表中使用的数据。

我很自信,可以通过在主项目表和原始数据之间使用COUNTIF来识别要添加的虚拟项目。 我的挑战是数据透视表中的行数每周都在变化,所以我需要1)确定原始数据报告的最后一行,以及2)在最后一行下面插入虚拟行。

任何人都可以使用下面的例子提出一个策略?

数据中的项目

AAA BBB DDD FFF 

不在数据中的项目手动插入

 CCC EEE 

我没有得到任何错误,但这是行不通的。

 Sub DUMMY_ITEMS() ' ' DUMMY_ITEMS Macro Sheets("Operations").Select Range("H2:V73").Select Selection.Copy Sheets("Raw Data").Select Dim LastRow As Long With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 

感谢您在这里的评论代码是固定的版本:

 Sub DUMMY_ITEMS() Dim operationsSheet As Worksheet Dim rawDataSheet As Worksheet Dim copyRange As Range Dim LastRow As Long Set operationsSheet = Sheets("Operations") Set rawDataSheet = Sheets("Raw Data") operationsSheet.Range("H2:V73").Copy With rawDataSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With rawDataSheet.Cells(LastRow, 1).PasteSpecial xlPasteValues End Sub 

不过,我强烈build议你看看下面的偏移解决scheme,以获得一个dynamic数据源。

最重要的是,始终保持您的数据透视表的速度是一个巧妙的技巧:创build名称范围的名称rData

 =OFFSET($A$1;;;COUNTA(A:A);COUNTA(1:1)) 

其中,A1是数据透视表的格式,COUNTA(A:A)计算将范围扩展到(select填充所有logging的列)所需的行数,COUNTA(1:1)计算数量的标题。 将rData作为数据透视源。 每次添加行或列时,rData都会延长。 没有macros需要。

我通常将整个表分配给一个数据范围

 Set currentData = ActiveWorksheet.Range("A1").CurrentRegion 

范围(“A1”)是数据集的起点

 with currentData lastRow = .rows(.rows.count).row end with 

可能不是最好的方式来做到这一点,但为我工作然后你可以使用下面的东西

 ActiveWorksheet.Cells(lastRow+1,1).Value = "CCC" ActiveWorksheet.Cells(lastRow+2,1).Value = "EEE" 

或者你可以使用偏移量

  Set rangeToFill = ActiveWorksheet.Cells(lastRow,1) rangeToFill.offset(1,0).value ="CCC" rangeToFill.offset(2,0).value ="EEE" 

希望这个对你有帮助。