我在excel中有一个可刷新的表,我想按几个日期范围过滤行。每行都有日期和其他信息。
我想找到第一个日期范围(F1:F2)中的行,而不是第二个日期范围(H1:H2)。
该表是可刷新的,可以更改大小。它目前跨越A3:X6146。该表是一个查询,因此当使用单独的日期范围查找表值时,它将更改大小。
我没有太多的VBA经验,所以这个问题让我感到沮丧。有什么想法吗?
由于
编辑:
我会尝试让问题更加清晰。
我有一个通过查询创建的表,该查询提取的数据介于开始日期和结束日期,2016年1月1日和12月31日这里。它会在每次购买商品时列出,因此每个商品都可以多次列出。
我想查找活动日期范围开始和结束日期(单元格F1和F2)之间购买的项目(列于表格中),而不是在非活动日期范围(单元格H1和H2)之间购买。
Starting Date: 1/1/2016 Active Date Range Start: 3/1/2016 Inactive Date Start: 3/2/2017
Ending Date: 12/31/2017 Active Date Range End: 3/1/2017 Inactive Date End: 9/22/2017
item date
1 9/21/2017
2 9/20/2017
3 9/20/2017
答案 0 :(得分:0)
是的,我可以告诉你我会做什么。
创建一个附加列以保留结果值,如果是在日期范围之内或之外。然后
dim t() as string, lin as long, linf as long
linf=Range("F65536").End(xlUp).Row 'or any other more precise way to get the final line
redim t(1 to linf-2,1 to 1)
'range dates - are they on the worksheet?
dim rg_dates as Range,r as range,b as boolean
set rg_dates=Sheets("xxxx").Range("B1:B4") ' just an example, the range would be B1:C4 but use only the first column - see below
For lin=3 to linf
b=False
For each r in rg_dates
If cells(lin,"F").value>= r.Cells(1,1) and cells(lin,"G").Value<=r.Cells(1,2).value then
b=true
Exit for
End If
Next r
If b then t(lin-2,1)="Y" else t(lin-2,1)="N"
Next l
Range("Z3:Z" & linf).Value = T
'然后只过滤表。
有很多事情要做,以保持它没有错误,以及如何在具体情况下应用它。希望通过我上面写的内容,您可以了解使用VBA可以做的事情。如果您使用代码过滤表,您可以对用户执行所有这些操作,为过滤条件创建一个额外的列,过滤,然后删除整个列。