使用VBA循环使用引用查找已关闭工作簿中的值,并使用相同的引用ID粘贴活动工作簿

时间:2017-09-29 01:31:31

标签: excel vba excel-vba loops

我经历了很多次逻辑迭代,似乎无法把它放在一起......这就是目标:

我需要从十个工作簿中导入数据,这些工作簿每天都会更新一个标题为约定的新工作表" 9/28/17" ...并将此信息复制到一个增长的主工作表中每天一列。

我认为代码的结构应该是在定义的工作表中循环遍历十个定义的范围,寻找参考值(在绝对位置,主工作表的第一列)并从已关闭的工作簿中返回一个值从参考ID到参考右侧的几列... 这可能吗?如果是这样,我将如何将其写入代码?

在我看来,userform需要具备以下功能:

  • 为10个工作簿中的每一个定义一个位置(因此我可以每月更新)
  • 日期(每个工作簿包含一个月的日期表)
  • 在主工作表上添加一列以将检索到的值放入第一行中的日期

我非常感谢帮助确定要遵循的代码的适当流程。我有一些代码可以使用硬编码引用来完成部分工作,但由于可能会添加行数据库我喜欢查找的想法,这将无需更改代码并提供数据在正确位置的验证。

1 个答案:

答案 0 :(得分:0)

这是您需要编写的代码的结构。

Sub Project_Plan()

    ' The Master workbook contains this code
    ' Assign this workbook to a Variable
    ' create the column in which to store the day's data
    ' identify that location by variables
    ' write the date in the first row
    ' (the same date defines the names of the worksheets in the 10 workbooks)

    ' Provide the location of the 10 workbooks
    ' Provide their names
    ' For Each of the 10 workbooks
        ' Extract the data from the daily sheet
        ' Write the data to an Array

        ' Find the location in the defined column of
        ' the Master workbook and write the data there
        ' using the array as a source
    ' Next Workbook
End Sub

上述80%的工作占用了项目完成时间的20%。 80%的时间将用于准备细节,例如如何确定列的最后一行,您不知道将有多少条目。

您似乎已经完成了20%的项目准备工作的约20%。你已经达到了一个有利位置,你可以看到无数的问题,你甚至不知道如何制定。在此论坛和其他论坛上,只有在您找到问题后才能获得帮助。

为了进一步提高您的准备工作,您需要开始。我建议你采取我上面提供的蓝图(我猜这与你看到的自己没有太大不同),然后按照自己的方式行事。当您接近解决方案时,您将更好地了解您需要答案的问题。

我的猜测是你将需要大约50行代码,这将引发大约20个严重的问题。一旦找到它们,你就会很快得到答案。

从空白代码表开始。将Option Explicit写在顶部,为主程序指定一个有意义的名称,然后开始声明第一步所需的变量。您提供的名称越多,使用它们的时间就越多。