2017-04-04 115 views
0

我有多個工作表從ODBC中抽取數據,並定期更新。這些表單中的每一個跟蹤不同的事物例如,「檢查」選項卡跟蹤所有檢查交易,「CreditCardCharge」選項卡跟蹤所有CC交易...等。我爲所有工作表創建了相同的標籤。例如日期,參考編號,帳戶名稱,備註,金額等等。我需要將所有這些工作表映射到一個主數據轉儲單,只要我更新文件。最後一行,行和範圍複製從多個工作表粘貼到一個工作表

這是工作流程:

  • 清除在「LP_DataDump」選項卡中的所有數據從A2開始
  • 複製從A3「檢查」選項卡中的數據山口Ĵ結束行
  • 粘貼複製的數據,以「LP_DataDump」從A2
  • 複製「CreditCardCharge」標籤從A3數據開始山口Ĵ結束行
  • 粘貼複製的數據爲「LP_DataDump」從最後一個空行開始

我從下面開始,但它不起作用。

任何人都可以建議嗎?

Sub CopyCheckValue() 

Dim Check As Worksheet 
Dim LastRow As Long 

Set Check = Sheets("Check") 
LastRow = Check.Cells(Check.Rows.Count, "A").End(x1Up).Row 

Check.Range("A3:J" & LastRow).Copy _ 
     Destination:=Worksheets("LP_DataDump").Range("A2") 

End Sub 
+1

什麼不在那裏工作?你的代碼對我來說看起來很好(對於你在工作流中提到的前三點)。你有沒有嘗試實施最後2? –

回答

0

工作表「檢查」是否只包含您的數據?我可以猜測,是否由於.End方法跳過您的數據?如果「檢查」工作表中的最後一行是您的數據,則.End方法將查找其上方的結尾。

LastRow = Check.Cells(Check.Rows.Count, "A").End(x1Up).Row 

要這樣:

LastRow = Check.Rows.Count 

如果列A和B是空的,而C列至J沒有公式,但只有數據的公式,我會推薦下面的代碼,假設有將始終是從C3開始的數據,並且在C3和結束之間沒有空單元格。

LastRow = Check.Cells(3, "C").End(xlDown).Row 

如果中間存在空單元格或其他列中的公式,則使用LastRow作爲第一個建議。然後使用循環將值分配到另一個工作表中,而不是複製並粘貼整個範圍。

PasteRow = 2 
For RowCounter = 3 to LastRow 
    If Check.Cells(RowCounter, "A") <> "" Then 
     Check.Range(Cells(RowCounter, "A"),Cells(RowCounter, "J")).Copy 
     Worksheets("LP_Datadump").Cells(PasteRow,"A").PasteSpecial Paste:= xlPasteValues 
     PasteRow = PasteRow+1 
    End If 
Next 

如果你有很多行,我會在複製之前建議過濾,這樣可以避免循環。假設您希望根據列A對其進行過濾,則代碼如下。

LastRow = Check.Rows.Count 
Check.Range("A3:J" & LastRow).AutoFilter Field:=1, Criteria:="<>" 
Check.Range("A3:J" & LastRow).Copy 
Worksheets("LP_Datadump"_.Cells(2, "A").PasteSpecial Paste:= xlPasteValues 
Check.Range("A3:J" & LastRow).AutoFilter Field:=1 
+0

感謝您的回覆!該錯誤實際上是在從 LASTROW = Check.Cells未來(Check.Rows.Count, 「A」)。完(X1UP).Row 我收到運行時錯誤 「1004」 「檢查」 選項卡只包含我的數據。數據來自我設置的QuickBook ODBC。我操縱了一些數據並添加了列A和B.列標籤是賬號,列B是類型。在這兩列中我有「Isblank」和「索引」和「匹配」公式,直到單元格「A65000」。這會影響我的代碼如下嗎? – Jesslynn

+0

Omg ...我剛剛更換 LASTROW = Check.Cells(Check.Rows.Count, 「A」)。完(X1UP).Row 到LASTROW = Check.Rows.Count 它的工作......很多很多的感謝! – Jesslynn

+0

儘管這樣做效果很好,但現在我無法繼續處理其餘的表單,因爲我的A和B列中的公式爲空白單元格。每當從「Check」選項卡複製並粘貼到「Datadump」選項卡時,帶有公式的空白單元格也會粘貼到「數據總線」選項卡中。即使我已經讓它們複製粘貼特殊值,但它不會幫助繼續使用另一個表單,因爲它返回到最後一個空單元格到A65000 – Jesslynn

相關問題