【发布时间】:2021-02-18 17:59:33
【问题描述】:
我在试图找到解决问题的方法时遇到了困难。以下是我正在尝试做的总结:
情况:我每周收到 4 个相同的工作表,我需要在我的摘要工作表上合并数据:
| Year | Week | Town 1 | Town 2 | Town 3 | Town 4 |
|---|---|---|---|---|---|
| 2021 | Week 1 | ||||
| 2021 | Week 2 |
工作表:我每周都会收到相同的工作表,其中包含指向我需要提取的单元格的路径,如下所示:
A:\Network\2021\Week 1[Town 1.xlsx]Sheet1'!$D$4'
A:\Network\2021\Week 1[Town 2.xlsx]Sheet1'!$D$4'
A:\Network\2021\Week 1[Town 3.xlsx]Sheet1'!$D$4'
A:\Network\2021\Week 1[Town 4.xlsx]Sheet1'!$D$4'
想法/解决方案:
用户想要填充第 1 周的数据:
-
输入框提示用户输入年和周,这将成为文件路径中的变量以提取数据
-
Inputs 将创建文件路径:A:\Network\ Year Input \ Week Input \ [Header.xlsx]Sheet1'!$ D$4'
-
然后使用该输入从每个工作簿中提取数据
我现在所处的位置:
从我的研究来看,我似乎必须使用 vba 来实现这一点,但我不是专家,你会碰巧知道一个更简单的方法,或者让我知道我的代码是否在正确的轨道上?
Sub AddANewWeek ()
' ------------- Town Summary Worksheet -------------
Application.ScreenUpdating = False
Worksheets("Town Summary").Activate
Dim Town_Summary As Worksheet
Set Town_Summary = Worksheets("Town Summary")
'------------- User inputs the name of the Year-Week to extract the data -------------
On Error GoTo ErrorMessage
Dim myYear As Variant
myYear = InputBox("Please enter the Year to extract data:")
On Error GoTo ErrorMessage
Dim myWeek As Variant
myWeek = InputBox("Please enter the Week to extract data:")
【问题讨论】:
-
@Gass 我非常感谢您认为需要的尽可能多的会议,谢谢您的提议,我正在给您发送电子邮件
-
这是一个好的开始@CMC。年份总是当前年份吗?如果是这种情况,我们可以使用
Format$(Date, "yyyy")获取当前年份而无需输入。 -
在您的解决方案想法中,您在路径
HEADER而不是TOWN中为.xlsx文件使用了不同的名称,您能再解释一下吗? ...工作表的名称是始终相同还是会更改? -
@Gass 谢谢 - 如果这样更容易,年份总是可以是当前年份,唯一可能的问题可能是 12 月的最后一周。如果用户在 12/31 收到数据,但要到明年 1/2 才导入。
-
我们可以做一个只在 12 月和 1 月工作的输入系统。在今年剩下的时间里,它将是自动的。