- To post as a guest, your comment is unpublished.· 2 years agoSorry for reply such late, but I do not understand your question, the VBA only for listing dates between a date range, why need to loop the code？
How to list all dates between two dates in Excel?
In some cases, if you have the specific starting date and the ending date, you may need to list all the dates between these two given dates in Excel. Now this tutorial is talking about the methods to list all dates between two dates in Excel.
Here I introduce formulas which can quickly list all dates between two given dates for you in Excel.
1. Type the starting and ending dates into two cells, here I type them into cell A1 and A2. See screenshot:
2. Then go to cell C1 to type this formula =A1+1 into it, then click Enter key. See screenshot:
3. Then in cell C2, type this formula =IF($A$1+ROW(A1)>=$A$2-1,"",C1+1) into it, then drag the autofill handle down to the cells until a blank cell appears. See screenshots:
Then you can see all the dates between two given dates are listed in the column.
In the above formulas, A1 is the starting date, A2 is the ending date, and C1 is the first date among the date range.
If you are interested in macro code, you can use the below VBA to list all dates between two given dates in Excel.
1. Type the starting date and ending date you into two cells, here I type in cell A1 and B1. See screenshot:
2. Press Alt +F11 keys to open Microsoft Visual Basic for Applications window.
3. Then click Insert > Module and copy and paste below VBA code to the popping Module window.
VBA: List all dates between two dates.
Sub WriteDates() 'Updateby20150305 Dim rng As Range Dim StartRng As Range Dim EndRng As Range Dim OutRng As Range Dim StartValue As Variant Dim EndValue As Variant xTitleId = "KutoolsforExcel" Set StartRng = Application.Selection Set StartRng = Application.InputBox("Start Range (single cell):", xTitleId, StartRng.Address, Type: = 8) Set EndRng = Application.InputBox("End Range (single cell):", xTitleId, Type: = 8) Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type: = 8) Set OutRng = OutRng.Range("A1") StartValue = StartRng.Range("A1").Value EndValue = EndRng.Range("A1").Value If EndValue - StartValue <= 0 Then Exit Sub End If ColIndex = 0 For i = StartValue To EndValue OutRng.Offset(ColIndex, 0) = i ColIndex = ColIndex + 1 Next End Sub
4. Click Run or F5 to run the VBA, and a dialog pops out for you to select the starting date, then click OK, then select the ending date in the second popping dialog. See screenshot:
5. Click OK, then select a cell to put out the dates, and then click OK. Now you can see all the dates between two dates are listed. See screenshots:
Note: The list generated by this VBA includes the starting date and ending date.
Actually, if you installed Kutools for Excel – a handy add in tool, you also can use the Insert Random Data to solve this problem.
|Kutools for Excel, with more than 300 handy Excel functions, enhance your working efficiency and save your working time.|
After free installing Kutools for Excel, please do as below:
1. Select a column you want to list dates between two dates, and click Kutools > Insert > Insert Random Data. See screenshot:
2. Then in the Insert Random Data dialog, click Date tab, then select the starting and ending dates from the From and To list, then remember to check Workday, Weekend and Unique Values checkboxes. See screenshot:
3. Click Ok to close the dialog, and another Kutools for Excel dialog pops out, just click Yes. Then you can see the dates between starting date and ending date are listed. See screenshots:
4. Now you need to sort the date list in an order you need. Click Data > Sort Oldest to Newest. Then you can see the dates are sorted from oldest date to newest date. See screenshots:
With Insert Random Data utility, you also can insert random integer, random string, and random time so on. Click here to know more about Insert Random Data.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
- To post as a guest, your comment is unpublished.· 2 years agoHow to loop this vba code (1000 rows for example) ?
- To post as a guest, your comment is unpublished.· 2 years agoFirat - did you solve your issue? I have exactly the same issue and I cannot get the result in the row instead of the column.
- To post as a guest, your comment is unpublished.· 2 years agoIf you invert this line you can make it work :
OutRng.Offset(ColIndex, 0) = i to OutRng.Offset(0, ColIndex) = i
- To post as a guest, your comment is unpublished.· 2 years agoWhy do not try to transpose the column result to row?
- To post as a guest, your comment is unpublished.· 2 years agoi tried the VBA code it worked.. Thanks for sharing. Similarly is it possible to pase it along columns/ horizontally?
- To post as a guest, your comment is unpublished.· 2 years agoHello, if you want to list dates in a row horizontally, you just need to use the vba code to list the dates, and copy the results and paste transpose.
- To post as a guest, your comment is unpublished.· 3 years agoHello,
Thanks for sharing a great code. I would like to ask one question though. I am using this VBA code you shared.
1) Can I list all the other cells in the same row with the dates?
2) Can we define the starting date cell and ending date cell and the cell that the new information will be written?
I am asking these questions because I have 30 rows. Each row has data for different people. Cell G is a starting date and Cell H is an ending date. Other cells contains some information. I would like this to be listed in a new cell as all the dates between these cells. For example (just showing demonstration, so only G and H cells written below-I is where the list appears):
Row 2 Person A 28/05/2017 05/06/2017 28/05/2017
Row 3 Person A 28/05/2017 05/06/2017 29/05/2017
Row 4 Person A 28/05/2017 05/06/2017 30/05/2017
Row 5 Person A 28/05/2017 05/06/2017 31/05/2017
Row 6 Person A 28/05/2017 05/06/2017 01/06/2017
Row 7 Person A 28/05/2017 05/06/2017 02/06/2017
Row 8 Person A 28/05/2017 05/06/2017 03/06/2017
Row 9 Person A 28/05/2017 05/06/2017 04/06/2017
Row 10 Person A 28/05/2017 05/06/2017 05/06/2017
Row 11 Person B 23/05/2017 31/05/2017 23/05/2017
Row 12 Person B 23/05/2017 31/05/2017 24/05/2017
Row 13 Person B 23/05/2017 31/05/2017 25/05/2017
Row 14 Person B 23/05/2017 31/05/2017 26/05/2017
and so on...
- To post as a guest, your comment is unpublished.· 3 years agoCan we use text box instead of in box in macro