Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用VBA循环将数据从一张图纸复制到另一张图纸_Database_Vba_Loops_For Loop - Fatal编程技术网

Database 使用VBA循环将数据从一张图纸复制到另一张图纸

Database 使用VBA循环将数据从一张图纸复制到另一张图纸,database,vba,loops,for-loop,Database,Vba,Loops,For Loop,我是VBA编程的新手,所以我需要你的帮助。我必须创建一个宏,将数据从一张图纸复制到另一张图纸。因此,我所做的是记录一个宏(使用宏记录器)到我必须复制/粘贴的步骤。现在我必须创建一个循环来处理我需要的所有信息 以下是包含数据的工作表的屏幕截图: 以下是应粘贴数据的工作表的屏幕截图: 让我们来谈谈我的报告中包含的数据。我有我公司服务的国家的月度报告。每个月的每一天我都有一些预测,这些预测应该上传到我们的数据库中 以下是我已经拥有的代码: Sub manual_upload() Shee

我是VBA编程的新手,所以我需要你的帮助。我必须创建一个宏,将数据从一张图纸复制到另一张图纸。因此,我所做的是记录一个宏(使用宏记录器)到我必须复制/粘贴的步骤。现在我必须创建一个循环来处理我需要的所有信息

以下是包含数据的工作表的屏幕截图:

以下是应粘贴数据的工作表的屏幕截图:

让我们来谈谈我的报告中包含的数据。我有我公司服务的国家的月度报告。每个月的每一天我都有一些预测,这些预测应该上传到我们的数据库中

以下是我已经拥有的代码:

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
我不知道如何开始循环。应添加哪些数据,如各种等。
我将感谢您的帮助。

如果数据都在一张工作表中,这里有一个不使用VBA执行这些步骤的指南(如果数据在不同的工作表中,您可以使用具有相同结构的多个查询的合并):

1) 按Control+T选择数据并设置为表格:

2) 使用powerquery导入数据(excel 2016“从表格导入”选项位于“数据”选项卡中,在早期版本中,您需要安装powerquery加载项并使用“电源”选项卡)。此时将出现一个窗口,其中包含表格数据。然后,您将使用此数据视图

3) 通过高亮显示删除不需要的列,然后右键单击“删除”

4) 选择日期列并取消打印。您可以选择第一个日期列,然后按住shift键并选择最后一个日期列以高亮显示所有日期)

5) 双击列标题以重命名,例如属性->日期,值->预测,DB中的名称->国家

6) 检查数据类型是否正确

7) 通过拖动列以重新排列,将列重新排序以匹配所需的输出

8) 最后关闭并加载到工作表

9) 查看结果

10) 您可以将数据添加到源表中,然后单击查询上的刷新以更新所有内容。对图像中的不同表格表示歉意,因为此图像是稍后为回答问题而进行的编辑。在结果表中选择单元格时,将出现查询窗口,您将看到查询名称和绿色刷新箭头。单击此按钮可在源数据发生更改时进行更新


根据预测中的列数,我建议考虑使用Powerquery。基本步骤是:将源数据(如发布的图像1中的数据)设置为表,让powerquery选择该表(从表中查询),然后重命名要保留的列,删除不需要的列,突出显示所有日期列,并从“转换”选项卡(或右键单击)取消选择列。然后关闭并加载到工作表。您的解释是否中断?您没有解释如何在期望的结果中填充字段。什么是仪表板,预测?除此之外,这看起来像一个熔化过程。任何包含Python/R/SAS等程序/语言的数据集都可以进行相应的重塑。非常感谢您的帮助,但我需要创建一个宏,因为我将每月更改此数据。这意味着我将有几个月的天数减少。表将自动更新,创建的查询有一个小绿色箭头。当源表中有新数据时,单击箭头,所有内容都会更新。Y谢谢你,但假设我的老板想要一个宏:D:D:D