2017-10-13 12 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 

:ここ

は私が既に持っているコードです。様々なデータの追加が必要です。 私はあなたの助けに感謝します。データはすべて1枚(データが異なるシートである場合は、同じ構造の複数のクエリのマージを使用することができます)であればここで

+0

は予測全体で多くの列があるかに応じて、私はPowerqueryを使用してについて考えることをお勧め。基本的な手順は次のとおりです。投稿された画像1のようにソースデータをテーブルとして設定し、パワーテーブルでそのテーブルを選択し(テーブルからのクエリ)、保持したいカラムの名前を変更し、すべての日付列を強調表示し、変換タブから列をピボット解除する(または右クリックする)。次にシートを閉じてシートにロードします。 – QHarr

+0

あなたの説明は断ち切られましたか?あなたは、どのようにフィールドが所望の結果で満たされるか説明しません。 * Dashboard *、* Forecast *とは何ですか?それ以外は溶融プロセスのように見えます。 Python pandas/R/SASのようなプログラム/言語を保持するデータセットはそれに応じて変形することができます。 – Parfait

答えて

1

はVBAなしでこれらの手順を実行するためのガイドです:

1)あなたのデータを選択し、コントロール+ Tを押して、表のように設定: Table

2)powerqueryを使用してデータをインポートします(表オプションから2016エクセルすると、powerqueryがで追加して使用し、インストールする必要があります以前のバージョンでは、[データ]タブにあります電源タブ)。テーブルデータが入ったウィンドウが表示されます。このデータビューで作業します。

Adding to powerquery from table

3)強調することで、不要な列を削除してから、右

Remove columns

4)が日付列とアンピボットを選択して[削除]をクリックします。その後、最初の日付列を選択するシフトを保持し、例えば名前を変更する列ヘッダーで)

Unpivot date columns

5)をダブルクリックして、すべてを強調するために、最後の日付列を選択することができます属性 - >日付、バリュー - >予測、DB内の名前 - >国

Renaming columns

6)データ型を確認してください

Setting column data types

7正しい)所望の出力に合わせて列の順序を変更しますするためにそれらをドラッグして再手配

Re-arrange column order

8)決勝あなたはすべてを更新するために、クエリにリフレッシュをクリックして、あなたのソーステーブルにデータを追加することができます)の表示結果

Result

10)

Close and load

9ワークシートにLY近いとロード。このイメージと異なるイメージの表は、後で質問に応じて編集されます。結果テーブルでセルを選択すると、クエリウィンドウが表示され、クエリの名前と緑色のリフレッシュ矢印が表示されます。ソースデータが変更されたときに更新するには、これをクリックします。

enter image description here

+0

ありがとうございました。私はこのデータを毎月変更するため、マクロを作成する必要があります。だから、私はより少ない日数で月を持つことになります。 –

+0

テーブルが自動的に更新され、作成されたクエリには緑色の矢印が表示されます。ソーステーブルに新しいデータがある場合、矢印をクリックするとすべてが更新されます。 Y – QHarr

+0

ありがとうございますが、私のBOSSがマクロを望んでいると言うことができます:D:D:D –

関連する問題