繁体   English   中英

根据范围中的日期更新来自另一个工作表的列中的值

[英]Update value in a column from another worksheet depending on the date in a range

根据范围中的日期更新来自另一个工作表的列中的值

我们的新工作薪酬系统于 2017 年 8 月上线。

这是新的工资日历(称为工资期)

开始日期 结束日期 支付期

17 年 8 月 10 日 17 年 8 月 23 日 PP0001

24 八月 17 06 九月 17 PP0002

07 Sep 17 20 Sep 17 PP0003

21 Sep 17 04 Oct 17 PP0004

17 年 10 月 5 日 17 年 10 月 18 日 PP0005

17 年 10 月 19 日 17 年 11 月 1 日 PP0006

这是成员表(称为 MemberList)

姓名 到期日 在 Pay Cal 中处理的金额

Raghu 17 年 7 月 15 日 $248.00 PP0001

Vima 17 年 7 月 20 日 $354.00 PP0001

Abhi 17 年 8 月 10 日 954.00 美元 PP0001

Neelima 17 年 8 月 23 日 $134.00 PP0001

Raghu 17 年 9 月 14 日 134.00 美元 PP0003

Vima 17 年 9 月 21 日 524.00 美元 PP0004

Abhi 17 年 10 月 6 日 332.00 美元 PP0005

Neelima 17 年 10 月 20 日 $158.00 PP0006

Raghu 06 Sep16 $456.00 PP0002

Vima 17 年 9 月 19 日 159.00 美元 PP0003

Abhi 17 年 10 月 3 日 357.00 美元 PP0004

Neelima 17 年 10 月 18 日 $852.00 PP0005

我想用支付周期更新已处理的薪酬校准列。

截止日期为 17 年 8 月 23 日或 23 日的任何内容都将在 PP0001 和相应工资日历的其余部分中处理。 我需要有关代码的帮助来编写宏。

伪代码:

Sub updateColunm4()

If duedate <= 23Aug17 then

    Update column 4 to PP0001

Else

    Update column 4 to the appropriate pay period

End if

End Sub

谢谢

问候

拉古

这是您可以使用的 UDF。 如果您的数据设置如附图所示,您可以运行测试程序以查看结果。 或者干脆直接部署 udf。

它的签名是

GetPayPeriod(dueDate, lookupTable)

函数名称是GetPayPeriod ,您可以通过将其从单元格中调用

=GetPayPeriod(dueDate, lookupTable)

dueDate是您想要支付期间的日期。 lookupTable是要查找的范围。

Public Sub test()

Dim lookupTable As Range
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Sheet3") 'change as appropriate
Set lookupTable = ws.Range("A2:C7")

Dim dueDate As Date

dueDate = ws.Range("B15").Value2

MsgBox GetPayPeriod(dueDate, lookupTable)

End Sub

Public Function GetPayPeriod(ByVal dueDate As Date, ByVal lookupTable As Range) As String

If dueDate <= 42970 Then '23rd Aug 17
    GetPayPeriod = "PP0001"
    Exit Function
End If

Dim payPeriodsArray()

payPeriodsArray = lookupTable

Dim i As Long

For i = LBound(payPeriodsArray, 1) To UBound(payPeriodsArray, 1)

   If dueDate >= payPeriodsArray(i, 1) And dueDate <= payPeriodsArray(i, 2) Then

        GetPayPeriod = payPeriodsArray(i, 3)
        Exit Function

   End If

Next i

GetPayPeriod = "Period not found"

End Function

工作表中的示例用法:

在工作表中的用法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM