View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Dick Kusleika[_4_] Dick Kusleika[_4_] is offline
external usenet poster
 
Posts: 595
Default recursive output if amount x

benjo4u wrote:
I'm trying to output the names of all donors of $100,000 or greater
per week
of giving. I know how to sum all the money or the count all greater
than $100k, but this is in between. My best guess is:

=SUMPRODUCT((All!D2:D4998="100000")*(M49<=All!H2: H4998)*(N49=All!H2:H4998)*(All!Q2:Q4998))

where d is the dollar amount, m and n are the bookend dates to
compare to h,
the row's date, and q is the name of the fellow. I want an output
like "John,
Dick, Harry" Should I try something like

=SUM(IF(AND(All!D2:D4998="100000",M49<=All!H2:H49 98,N49=All!H2:H4998),All!Q2:Q4998,""))

or even

=SUM(IF(All!D2:D4998="100000",IF(M49<=All!H2:H499 8,IF(N49=All!H2:H4998,All!Q2:Q4998&",
",""),""),""))


You can't concatenate strings in an array formula, but it would be really
cool if you could. I think your best bet is a user-defined function

Public Function DonorNames(rNames As Range, _
rDates As Range, _
rAmt As Range, _
dtLower As Date, _
dtUpper As Date, _
dLimit As Double) As String

Dim i As Long
Dim sTemp As String

For i = 1 To rAmt.Cells.Count
If rAmt.Cells(i).Value dLimit Then
If rDates.Cells(i).Value = dtLower And rDates.Cells(i).Value <=
dtUpper Then
sTemp = sTemp & rNames.Cells(i).Text & ","
End If
End If
Next i

DonorNames = Left(sTemp, Len(sTemp) - 1)

End Function

Use it like

=donornames(A3:A6,B3:B6,C3:C6,DATE(2005,6,1),DATE( 2005,7,31),100000)

to get all donor names from june 1st to july 31st over 100,000.

--
Dick Kusleika
Excel MVP
Daily Dose of Excel
www.dicks-blog.com