Excel - 按日期筛选表结果

问题描述:

我在Excel中有一个可刷新的表,我想通过几个日期范围筛选行。每一行都有一个日期和其他信息。Excel - 按日期筛选表结果

我想查找在第一个日期范围(F1:F2)中且不在第二个日期范围(H1:H2)中的行。

该表可刷新,并可以更改大小。它目前跨越A3:X6146。该表是一个查询,因此当使用单独的日期范围查找表值时,它将更改大小。

我没有太多的VBA经验,所以这个问题让我绊倒了。有任何想法吗?

感谢

编辑:

我会尽力使问题更加清晰。

我有一个表,它是通过一个查询来创建的,该查询引入了起始日期和结束日期,2016年1月1日和12/31/2017之间的数据。它列出了每次购买一件物品,因此每一件物品都可以多次列出。

我想找到在活动日期范围的开始和结束日期(单元格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

添加具有“MATCH”公式的列在列H中找到F的值,过滤NA。不需要任何VBA。 –

是的,我可以告诉你我会做什么。

创建一个附加列以保留结果值(如果处于日期范围内或日期范围外)。然后

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可以执行的操作。如果您使用代码来过滤表格,则可以对用户执行所有这些操作,为过滤条件创建额外的列,然后进行过滤,然后删除整列。