Excelmacros根据条件计算价值

嗨,我需要一个macros来计算基于某些条件的发生次数。 这里是数据表的示例:

ID Paydate # of payments 1 5/1/2011 3 1 5/1/2011 3 1 3/1/2011 2 1 2/1/2011 1 2 6/12/2011 3 2 5/12/2011 2 2 4/12/2011 1 3 4/25/2011 2 3 3/25/2011 1 

我想要统计一个ID已经支付到该date的付款数量(第三列是我所需要的)。 例如,对于ID = 1和paydate = 5/1/2011,已经有3次付款,对于ID = 1和paydate = 3/1/2011,有2次付款。 macros应计算小于或等于当前date的付款次数,如果有多个具有相同date的ID,则不会增加计数。

如果有一种方法可以做到这一点将是伟大的,但它似乎太复杂的公式。 任何帮助将非常感激。

你不需要macros或vba。

 =COUNTIFS(A:A,A2,B:B,"<=" & B2) 

把这个放在C2中。

没有足够的信息去继续,比如你有没有finddate以及你在哪里findid。 所以如果我做了一些假设,我可以写一些这样的VBA。 这也有点长,可以分解成另一个函数来获得用户的响应

 Option Explicit Sub numberOfPayments() On Error Resume Next Dim iRow As Integer Dim iCol As Integer Dim dtDate As Date Dim iID As Integer Dim sResponse As String Dim iNumberOfPayments As Integer 'initialize the variables iNumberOfPayments = 0 iRow = 2 iCol = 1 'get the date sResponse = InputBox("Calculate for what date? (M/D/YYYY)", "Get Payment Date") 'check to make sure its a valid date If IsDate(sResponse) Then 'set date we are looking for dtDate = CDate(sResponse) Else MsgBox "You must enter a valid date" Exit Sub End If 'reset the response sResponse = "" 'get the ID sResponse = InputBox("Calculate for what ID?", "Get Payment ID") 'set the ID to look for iID = CInt(sResponse) 'if the conversion failed there will be an error If Err.Number <> 0 Then MsgBox "You must enter a valid ID" Exit Sub End If 'assumes you have data in each cell Do While Cells(iRow, iCol).Value <> "" 'check the ID If Cells(iRow, iCol).Value = iID Then 'this is done as not sure if the column is formatted as a date or just text If IsDate(Cells(iRow, iCol + 1).Text) Then If dtDate <= CDate(Cells(iRow, iCol + 1).Text) Then 'add the payments iNumberOfPayments = iNumberOfPayments + Cells(iRow, iCol + 2).Value End If End If End If 'move to the next row iRow = iRow + 1 Loop 'inform them of the number of payments MsgBox "there are " + Str(iNumberOfPayments) + " total payments." End Sub