2017-10-13 148 views
0

我是VBA編程的新手,所以我需要您的幫助。我必須創建一個將數據從一個表單複製到另一個表單的宏。所以我所做的是錄製一個宏(使用宏錄製器)到我必須複製/粘貼的步驟。現在我必須創建一個循環來完成我需要的所有信息。使用VBA循環將數據從一張紙複製到另一張

下面是一個包含數據的工作表的截圖:

Monthly Report Image

這裏是片的截圖,該數據應粘貼:

Desired Result Image

所以讓我們來談談我的報告包含的數據。我有我的公司服務的國家的月度報告。在每個月的每一天我都有一些預測,應該上傳到我們的數據庫。

這裏是我已經有了代碼:

Sub manual_upload() 

    Sheets("Forecast").Select 

    Range("G1").Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Selection.Copy 
    Sheets("Upload").Select 
    Range("A2").Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=True 


    Sheets("Forecast").Select 
    'ActiveWindow.ScrollColumn = 2 
    'ActiveWindow.ScrollColumn = 1 

    Range("C2").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Upload").Select 

    Range("B2").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 


    Application.CutCopyMode = False 
    Range("A2").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(0, 1).Select 
    Range(Selection, Selection.End(xlUp)).Select 
    Selection.FillDown 

    'Selection.AutoFill Destination:=Range("B2:B31") 
    'Range("B2:B31").Select 

    Sheets("Forecast").Select 
    Range("E2").Select 
    Selection.Copy 
    Sheets("Upload").Select 

    Range("C2").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Application.CutCopyMode = False 

    Range("b2").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(0, 1).Select 
    Range(Selection, Selection.End(xlUp)).Select 
    Selection.FillDown 

    'Selection.AutoFill Destination:=Range("C2:C31") 
    'Range("C2:C31").Select 

    Sheets("Forecast").Select 
    Range("B2").Select 
    Selection.Copy 
    Sheets("Upload").Select 

    Range("D2").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Application.CutCopyMode = False 

    Range("c2").Select 
    Selection.End(xlDown).Select 
    ActiveCell.Offset(0, 1).Select 
    Range(Selection, Selection.End(xlUp)).Select 
    Selection.FillDown 

    'Selection.AutoFill Destination:=Range("D2:D31") 
    'Range("D2:D31").Select 

    Range("E2").Select 
    Sheets("Forecast").Select 
    Range("G2").Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Selection.Copy 
    Sheets("Upload").Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=True 
    Sheets("Forecast").Select 
    Range("D2").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Upload").Select 
    Range("F2").Select 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Selection.AutoFill Destination:=Range("F2:F31") 
    Range("F2:F31").Select 

    'next i 
End Sub 

我不知道如何開始循環。應該添加哪些數據,如各種等。 我會感謝您的幫助。

+0

取決於整個預測多少列有,我建議考慮使用Powerquery。基本步驟如下:將您的源數據(如在發佈的映像1中)設置爲表格,使用powerquery選擇該表格(從表格中查詢),然後重命名要保留的列,刪除不想要的列,並突出顯示所有日期列,並從轉換選項卡(或右鍵單擊)執行unpivot列。然後關閉並加載到工作表。 – QHarr

+0

你的解釋是否被切斷?你不解釋領域如何填補預期的結果。什麼是*儀表板*,*預測*?除此之外,這看起來像一個融化過程。任何持有像Python pandas/R/SAS這樣的程序/語言的數據集都可以相應地重新設計。 – Parfait

回答

1

這裏是一個引導件,以執行這些步驟,而不VBA如果數據是在同一個表(如果數據是在不同的片材可以使用多個查詢的合併有相同的結構):

1)選擇的數據和按Ctrl + T設置爲表格。 Table

2)使用powerquery導入您的數據電源選項卡)。隨着您的表格數據將出現一個窗口。然後,您將使用此數據視圖。

Adding to powerquery from table

3)通過突出顯示刪除不需要的欄,然後點擊右鍵刪除

Remove columns

4)選擇日期列和UNPIVOT。您可以選擇的第一個日期欄,然後按住Shift鍵並選擇最後日期欄以突出顯示所有)

Unpivot date columns

5)雙擊列標題重命名例如屬性 - >日期,價值 - >預測,名稱中的DB - >國家

Renaming columns

6)檢查數據類型是否正確

Setting column data types

7)重新排序列,以匹配所需的輸出通過拖動重新安排

Re-arrange column order

8)決賽LY接近和負載到工作表

Close and load

9)查看結果

Result

10)您可以將數據添加到您的源表,然後點擊查詢刷新更新的一切。對圖像中的不同表格表示歉意,因爲此圖像是針對問題的稍後編輯。在結果表格中選擇單元格時,將出現查詢窗口,您將看到查詢的名稱和綠色刷新箭頭。點擊這個來更新源數據發生變化的時間。

enter image description here

+0

非常感謝您的幫助,但我需要創建一個宏,因爲我將每月更改這些數據。所以這意味着我會有更低的日子。 –

+0

表格將自動更新並且創建的查詢具有一點綠色箭頭。在源表中有新數據時,單擊箭頭並更新所有內容。 Y – QHarr

+0

謝謝,但讓我說我的BOSS想要一個宏:D:D:D –

相關問題