[英]Make a worksheet active depending on value in cell from another worksheet
[英]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.