根据范围

时间:2018-02-25 08:37:46

标签: excel excel-vba vba

根据范围中的日期

更新其他工作表中列的值

我们的新工资系统于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

1 个答案:

答案 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

表单中的示例用法:

Usage in sheet