如何让 Excel 根据输入的日期从多个工作簿中提取精确日期的数据

如何让 Excel 根据输入的日期从多个工作簿中提取精确日期的数据

我正在运行 Windows 7 并使用 Excel 2007 Enterprise。

我是一名卡车司机,需要根据每天变化的系统来计算我的工资。我根据路线类型按英里、按站点、按小时或按固定费率获得报酬。

我制作了一个工作簿,它使用=IF()公式来确定要使用的工资等级,并自动计算我应该得到多少钱。因此,每个工作簿都有 4 张表,每趟行程 1 张表,因为超过 4 张的情况非常罕见,每年可能只会发生一次。

工作表 1 自动从工作表 2、3 和 4 中提取数据并填写正确的单元格,然后根据输入的数据重新计算我的工资。

现在我每天都有一本工作簿,由于几个原因(这里不值得解释)我无法合并几天,所以我必须有每周的总数来比较我的总收入。出于这个原因,我还有另一本工作簿,但是我似乎无法让我的周薪从我的每日工资表中提取数据,因为它们是单独的工作簿。我需要我的周薪来提取所有总工资单元格并将它们加起来放在一张工作表上。

每日工资表中的单元格是“工作表 1 上的 B23”,这是所有工作簿上的位置。我知道这有很多信息,但我希望它能帮助您了解我需要什么。因此,我需要:我想输入我要付款的日期,并让工作簿根据该日期找到需要参考的日期,即:11/15/13 是 11/03/13 - 11/08/13 的工资”。现在它有了日期,在工作表 1 上的单元格 B23 中找到所有 7 个日期的值并将其显示在此工作簿中。然后,我可以让它将我的总工资与我应该得到的工资进行比较,如果两者不同,这部分我已经知道如何做,并且已经设置好了。提前感谢您的帮助。

答案1

看一下这个并确保将其替换path为您在计算机上保存文件的路径。

工作原理:将其放在新工作簿的一个模块中,将发薪日放入单元格中A1并运行名为 的宏Total。日期和工资金额将显示在 B 列和 C 列中,总数显示在 中C7

Option Explicit
Sub Total()
Application.ScreenUpdating = False
Call getdates
Call openWBgetData
Range("c7") = [sum(C1:C6)]
Application.ScreenUpdating = True
End Sub

Private Sub getdates()
Dim i As Integer, j As Integer
j = 7

For i = 1 To 6
    Cells(i, 2) = Cells(1, 1).Value - j
    j = j + 1
Next

End Sub

Private Sub openWBgetData()
Dim k As Integer
Dim lng As Long
Dim path As Long
Dim wbname As String
path = "C:\path\to\"

For k = 1 To 6
    wbname = Cells(k, 2).Value
    Application.Workbooks.Open (path & wbname & ".xlsx")
    lng = Workbooks(wbname).Sheets("Trip-1").Range("O6").Value
    Workbooks(wbname).Close
    Cells(k, 3) = lng
Next


End Sub

相关内容