根据范围中的日期
更新其他工作表中列的值我们的新工资系统于2017年8月投入使用。
这是新的付款日历(称为付款期)
开始日期结束日期支付期
10 Aug 17 23 Aug 17 PP0001
24 Aug 17 06 Sep 17 PP0002
07 Sep 17 20 Sep 17 PP0003
21 Sep 17 04 Oct 30 PP0004
05 Oct 17 18 Oct 17 PP0005
19 Oct 17 01 Nov 17 PP0006
这是成员表(称为MemberList)
在Pay Cal中处理的名称到期日金额
Raghu 17 Jul 17 $ 248.00 PP0001
Vima 20 Jul 17 $ 354.00 PP0001
Abhi 10 Aug 17 $ 954.00 PP0001
Neelima 23 Aug 17 $ 134.00 PP0001
Raghu 9月17日$ 134.00 PP0003
Vima 21 Sep 17 $ 524.00 PP0004
Abhi 06年10月17日$ 332.00 PP0005
Neelima 20 Oct17 $ 158.00 PP0006
Raghu 06 Sep16 $ 456.00 PP0002
Vima 19 Sep 17 $ 159.00 PP0003
Abhi 03年10月17日$ 357.00 PP0004
Neelima 18 Oct 17 $ 852.00 PP0005
我想用付款期更新Payrated in Pay Cal列。
在PP0001和其他适当的支付日历中处理截止日期为8月23日或截止日期的任何事项。我需要帮助代码来编写宏。
伪代码:
Sub updateColunm4()
If duedate <= 23Aug17 then
Update column 4 to PP0001
Else
Update column 4 to the appropriate pay period
End if
End Sub
谢谢
此致
Raghu
答案 0 :(得分:1)
这是您可以使用的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
表单中的示例用法: