Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 宏查找最后一行并添加数据_Vba_Excel - Fatal编程技术网

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

Vba 宏查找最后一行并添加数据,vba,excel,Vba,Excel,每周我都会提取一系列项目的数据并生成一个数据透视表。在某些周内,这些项目中的一个或多个不存在数据。在这种情况下,该项将不会出现在报告中 为了避免手动检查透视表中是否没有意外排除任何项,我想手动将“虚拟”项添加到透视表中使用的数据中 我很有信心,通过在主项目表和原始数据之间使用COUNTIF,我可以确定要添加哪些虚拟项目。我的挑战是数据透视表中的行数每周都在变化,因此我需要1)标识原始数据报表的最后一行,2)在最后一行下面插入虚拟行 有人能用下面的例子提出一个策略吗 数据中的项目 AAA

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

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

我很有信心,通过在主项目表和原始数据之间使用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
不过,我强烈建议您研究下面的偏移解决方案,以获得动态透视数据源

最重要的是,有一个巧妙的诀窍可以让您的数据透视表始终保持最新速度: 创建名称rData的命名范围

其中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"

希望这能有所帮助

如果是,请查看链接。添加数据并不难。所以我没有收到任何错误,但这不起作用。非常感谢您的帮助子虚拟项目()“”虚拟项目宏工作表(“操作”)。选择范围(“H2:V73”)。选择选择。复制工作表(“原始数据”)。使用ActiveSheet LastRow=.Cells(.Rows.Count,“A”)。结束(xlUp)。行结束时使用Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlanks U3;:=假,转置:=假结束子'@l42@塔克诺尔
   Set rangeToFill = ActiveWorksheet.Cells(lastRow,1)
   rangeToFill.offset(1,0).value ="CCC"
   rangeToFill.offset(2,0).value ="EEE"