我需要的是在LOOKUP
函数中找到的单元格的地址。
我有一张桌子,上面有各种客户订单和付款。 tbl_main
与我的问题有关的列是[Receive Date]
,[Credit]
,[Balance]
。
(自动生成“余额”列)。
这是[Credit]
列:
每个月的第一天是每个客户的付款Due Date
,他需要支付该月完成的所有工作。因此,基于以下三点,我需要一个 CELL 来显示due date
是什么:
[Credit]
列中使用值查找最后一个单元格。仅此一项,我就知道了:=LOOKUP(2,1/(tbl_main[Credit]<>""),tbl_main[Credit])
[Balance]
列。如果是负数,请继续。
(客户在下个月的第一天还钱)
[Receive Date]
列,并计算其到期日是
(下个月的第一天是)。
我已经弄清楚了这个孤独:=EOMONTH(B328,0)+1
,但是B328
当然是我的测试单元。我需要我的公式能够计算出row index 4
。在某个位置的单元格中显示此due date
。
我只是不知道如何在不使用VBA的情况下编写公式来实现这一目标。
我尝试结合使用LOOKUP
和MATCH
的各种方法,但获得了#N/A
的结果。
有人可以帮忙吗?
答案 0 :(得分:0)
这是我想出的代码。它特定于我自己的需求,但也许有相同问题的人可以从中获取一些有用的代码。
Sub GetPaymentDueStatus()
'#################################
'Get \ Set "Payment Due" field
'#################################
'If not viewing one client - exit sub
If ActiveSheet.Range("SelectedClient") = "ALL CLIENTS" Then
Range("PaymentDueStatus") = "N\A"
Range("PaymentDueDate") = "N\A"
Exit Sub
Else
'Client has no debt
If Range("Total_All") >= 0 Then
Range("PaymentDueStatus") = "SETTLED"
Range("PaymentDueDate") = "N\A"
'Client has debt - check if on time or overdue
Else
'#################################
'Start Calculation
'#################################
Dim rownumCredit As Long
Dim colCredit As Long
Dim rngCredit As Range
Dim LastPaymentDate As Date
Dim MonthAfterPayment As Date
Set rngCredit = Range("rng_credit").Find(what:="*", LookIn:=xlValues, searchdirection:=xlPrevious)
rownumCredit = rngCredit.Row
colCredit = rngCredit.Column
'#################################
'Calculate the Last Payment date
'if it's ovedue
'#################################
'Get date of last payment
LastPaymentDate = Cells(rownumCredit, Range("rng_recDate_main").Column)
'Get next first of the month from last payment
MonthAfterPayment = WorksheetFunction.EoMonth(Cells(rownumCredit, Range("rng_recDate_main").Column), 0) + 1
'Check if overdue
If Month(MonthAfterPayment) <= Month(Date) Then
Range("PaymentDueStatus") = "OVERDUE"
Else
Range("PaymentDueStatus") = "ON TIME"
End If
Range("PaymentDueDate") = MonthAfterPayment
End If
End If
End Sub