我是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
我不知道如何启动循环。哪些数据应该像各种等一样添加 我将非常感谢你的帮助。
答案 0 :(得分:1)
如果数据全部在一个工作表中,那么这里是一个没有VBA执行这些步骤的指南(如果数据在不同的工作表中,您可以使用具有相同结构的多个查询的合并):
2)使用powerquery导入数据(excel 2016 from table选项位于Data选项卡中,在早期版本中,您需要安装powerquery add in并使用power选项卡)。将出现一个窗口,其中包含您的表数据。然后,您将使用此数据视图。
3)通过突出显示删除不需要的列,然后右键单击删除
4)选择Date列并取消忽略。您可以选择第一个日期列,然后按住shift并选择上一个日期列以突出显示所有)
5)双击列标题以重命名,例如属性 - >日期,价值 - >预测,DB中的名称 - >国家
6)检查数据类型是否正确
7)重新排列列以匹配所需的输出,方法是拖动它们以重新排列
8)最后关闭并加载到您的工作表
9)查看结果
10)您可以将数据添加到源表,然后单击查询上的刷新以更新所有内容。在图像中表示不同的表,因为此图像是稍后编辑以响应问题。在结果表中选择单元格时,将显示查询窗口,您将看到查询的名称和绿色刷新箭头。单击此按钮可在源数据发生更改时进行更新。