如何在Excel中列出两个日期之间的所有日期?
假设您需要构建一个按日期组织的表格,例如,您正在制定一个时间表并需要指定按日期排列的活动列表。如果是这种情况,您需要一个日期列表。
没有无限的列表,因此您需要一个开始日期和结束日期。在某些情况下,如果您已经知道要开始和结束的日期,则可能需要使用Excel创建一个包含这两个指定日期之间所有日期的列表。
使用公式列出所有日期
让我们通过一个例子逐步了解。
第一步
在我们的例子中,我们在Excel表格中有开始日期和结束日期。我们将创建一个列表,其中包含开始日期和结束日期之间的日期。请参见以下图像。
第二步
然后在C2单元格中键入下面给出的公式,然后按Enter。公式是=A2+1,其中A2是写有开始日期的单元格。按Enter后,您将看到开始日期的下一个日期。请参见以下图像。
第三步
然后,在C3单元格中选择下面给出的公式,然后按Enter。
=IF(A2+ROW(A2)>=B2,"",C2+1)
第四步
单击在单元格C3的右下角出现的“+”符号,这将启用自动填充功能,然后拖动以在其他单元格中反映出来。
定义语法或进行修改的难度是使用此公式的主要缺点。此外,日期未按正确顺序排列。
使用VBA列出所有日期
如果您对宏代码感兴趣,在Excel中可以使用以下Visual Basic for Applications(VBA)列出落在两个指定日期之间的任何日期。
请按照以下步骤操作 −
第一步
将开始日期和结束日期输入到单独的单元格中。
第二步
按“Alt + F11”键同时打开Microsoft Visual Basic for Applications窗口。
第三步
然后单击 插入 > 模块,弹出的模块窗口将打开。
这是VBA编辑器。
第四步
在模块窗口中,输入以下VBA代码。
Sub DatesBetween()
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 = "VBOutput"
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("A2").Value
EndValue = EndRng.Range("A2").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
步骤5
点击 运行 或按 F5 键来运行 VBA,然后会弹出一个窗口,在其中选择 起始日期, 然后单击 确定, 接着在下一个窗口中,选择 结束日期, 然后单击 确定。
然后会弹出另一个窗口,询问 输出位置, 输入输出单元格,然后单击 确定。
在我们的示例中,起始日期的单元格值为 A2,因此我们写成这样:” A A 2″。
在我们的示例中,结束日期的单元格值为 B2,因此我们写成这样:” B B 2″。
在我们的示例中,输出日期的单元格值为 C2,因此我们写成这样:” C C 2″。
点击确定后,关闭 VBA 窗口,就会得到起始日期和结束日期之间的所有日期,包括起始日期和结束日期,如下图所示。
结论
在本教程中,我们展示了两种不同的方法(公式和 VBA)来在 Excel 中列出给定日期之间的所有日期。