在excel中,如何确定一个月从哪一行开始,在哪一行结束?
在Excel中,我有一张类似于银行对账单的表格,其中一列是交易日期,然后是金额和其他详细信息的其他列。这张表是按日期排序的。主要需求是我需要一个函数来确定月份开始和结束的行。问题是,业务需要更改有时要追溯到几个月前,添加几行,或删除一些行,因此接下来几个月的月份位置会不断更改。问题是如何在excel中确定一个月从哪一行开始,在哪一行结束?将我们的数据如下所示: 我们想要2020年10月的开始行和结束行 首先在标准模块中输入以下用户定义的函数:在excel中,如何确定一个月从哪一行开始,在哪一行结束?,excel,Excel,在Excel中,我有一张类似于银行对账单的表格,其中一列是交易日期,然后是金额和其他详细信息的其他列。这张表是按日期排序的。主要需求是我需要一个函数来确定月份开始和结束的行。问题是,业务需要更改有时要追溯到几个月前,添加几行,或删除一些行,因此接下来几个月的月份位置会不断更改。问题是如何在excel中确定一个月从哪一行开始,在哪一行结束?将我们的数据如下所示: 我们想要2020年10月的开始行和结束行 首先在标准模块中输入以下用户定义的函数: Public Function FirstRow(
Public Function FirstRow(rng As Range, mnth As Long, yr As Long) As Long
Dim r As Range, v As Date
For Each r In rng
v = r.Value
If Month(v) = mnth And Year(v) = yr Then
FirstRow = r.Row
Exit Function
End If
Next r
FirstRow = 0
End Function
Public Function LastRow(rng As Range, mnth As Long, yr As Long) As Long
Dim r As Range, v As Date, boo As Boolean, i As Long, kol As Long
boo = False
For Each r In rng
v = r.Value
If Month(v) = mnth And Year(v) = yr Then
boo = True
End If
If boo Then
If Month(v) <> mnth Or Year(v) <> yr Then
LastRow = r.Row - 1
Exit Function
End If
End If
Next r
LastRow = 0
End Function
用户定义函数(UDF)非常易于安装和使用:
必须启用宏才能使其工作 简单的
Month()
Excel函数怎么样?您可以创建一个helper列,其中包含所述日期的月份,并在该列上放置一个自动筛选。您可以根据自己喜欢的任何月份进行筛选,并且可以在屏幕上看到开始行和结束行。您不需要为此编写任何程序。您可以使用工作表公式执行此操作
- 月开始日期行:
=AGGREGATE(15,6,1/((MONTH(Dates)=D2)*(YEAR(Dates)=E2))*ROW(Dates),1)
- 月结束日期行
=AGGREGATE(14,6,1/((MONTH(Dates)=D2)*(YEAR(Dates)=E2))*ROW(Dates),1)
注意:如果有重复的开始或结束日期,则检测到的行将是第一个开始日期或最后一个结束日期。如果这不是您想要的,请澄清。日期是否可以在日期列中多次出现?此聚合功能工作正常,谢谢Ron@AymanBasalamah很乐意帮忙。既然我的回答似乎是你所需要的,请注明接受。看见
=AGGREGATE(14,6,1/((MONTH(Dates)=D2)*(YEAR(Dates)=E2))*ROW(Dates),1)