Dates

S

Scafidel

I have an invoice with a starting date through ending date of workdays. I
use NETWORKDAYS to find the total, but I would also like to list the dates
worked in one cell, like C1, below. similar to this. What formula should I
use?
A1 B1 C1
5/01/07 5/15/07 5/1,5/2,5/3,5/4,5/7,etc

Thanks
Scafidel
Louisiana
 
J

Joel

try this custom function
If A1 has 5/1/07 and b1 has 5/15
=daysworked(A1,B1)

or just
=daysworked(5/1/07,5/15/07)






Function daysworked(startdate as date, enddate as date) As String
Dim mydate As Date

daysworked = ""
For mydate = startdate To enddate

If (Weekday(mydate) >= vbMonday) And _
(Weekday(mydate) <= vbFriday) Then

If daysworked <> "" Then daysworked = daysworked + ","
a = Month(mydate)
b = Day(mydate)
daysworked = daysworked + Str(Month(mydate)) + "/" + Str(Day(mydate))

End If

Next mydate

End Function
 
S

Scafidel

Hey, thanks alot Joel. I guess I need to learn more about VB, I keep finding
solutions there. For some reason, I am getting a space after the slash, 5/
1, 5/ 2. Otherwise it works great.
Thanks
Scafidel
Louisiana
 
J

Joel

the str function leave a space in front of the number for a sign. You can
eliminate the space like this

mid(Str(Day(mydate)),2) which skips the first blank character.
 
D

Dave Peterson

cStr() will add those space characters.

And it's more usual to use + to add numbers and & to concatenate text. (Excel's
VBA is very forgiving--but it may not always do what you want, so it's better to
use & when concatenating text.)

Option Explicit
Function DaysWorked(StartDate As Date, EndDate As Date) As String

Dim myDate As Date

DaysWorked = ""
For myDate = StartDate To EndDate
If (Weekday(myDate) >= vbMonday) _
And (Weekday(myDate) <= vbFriday) Then
If DaysWorked <> "" Then
DaysWorked = DaysWorked & ","
End If
DaysWorked = DaysWorked & Month(myDate) & "/" & Day(myDate)
End If
Next myDate

End Function
 
D

Dave Peterson

Another version:

Option Explicit
Function DaysWorked(StartDate As Date, EndDate As Date) As String

Dim myDate As Date
Dim myStr As String

myStr = ""
For myDate = StartDate To EndDate
If (Weekday(myDate) >= vbMonday) _
And (Weekday(myDate) <= vbFriday) Then
myStr = myStr & "," & Format(myDate, "m/d")
End If
Next myDate

If myStr <> "" Then
myStr = Mid(myStr, 2)
End If

DaysWorked = myStr

End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top