2017-01-23 95 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" 

希望這有一些幫助。

相關問題