2017-01-23 96 views
1

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

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

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

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

项目

AAA BBB DDD FFF 

项目在数据中不手动插入

CCC  
EEE 

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

​​
+0

如果您[查找最后一行](https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba/11169920#11169920),请查看链接。添加数据并不难。 – L42

+1

所以我没有收到任何错误,但这是行不通的。任何帮助真的很感激! '子DUMMY_ITEMS() ' “DUMMY_ITEMS宏 表( ”操作“)选择 范围。( ”H2:V73“)选择 Selection.Copy 表( ”原始数据“)选择 暗淡LASTROW。 。只要 随着ActiveSheet LASTROW = .Cells(.Rows.Count, “A”)结束(xlUp).Row 尾随着 Selection.PasteSpecial粘贴:= xlPasteValues,操作:= xlNone,SkipBlanks _ :=假,移调:= FALSE 结束子” @ L42; @tackgnol – ERKSMTY

回答

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 

我不过强烈建议你看看胶印解决方案下方有一个动态的枢轴数据源。

在所有的顶部,有一个巧妙的方法来始终保持你的数据透视表速达: 创建一个名称的命名范围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”)是数据集的beggining

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" 

希望这有一些帮助。

相关问题