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

时间:2017-01-23 17:46:16

标签: excel vba excel-vba

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

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

我非常有信心我可以通过在主要项目表和原始数据之间使用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

1 个答案:

答案 0 :(得分:1)

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

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

但我强烈建议您查看下面的Offset解决方案,以获得动态数据透视数据源。

最重要的是,有一个巧妙的技巧,可以始终保持您的数据透视表的速度: 创建名称​​ rData

的命名范围
=OFFSET($A$1;;;COUNTA(A:A);COUNTA(1:1))

如果A1是数据透视表的求助,则COUNTA(A:A)计算扩展范围所需的行数(选择为所有记录填充的任何列),以及COUNTA(1:1)计算标题数量。 将rData作为透视源。只要添加行或列,rData就会扩展。不需要宏。

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

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"

希望这有一些帮助。