从两个日期标准计算记录

时间:2017-03-21 03:38:14

标签: vba excel-vba excel

希望我能得到任何帮助。我已经尝试计算满足两个日期标准的记录(日期标准是动态的,所以会不断变化,我把它放在数据的下一张表上这里是我正在尝试的代码运行,这给我带来空白结果这是我到目前为止使用宏收集的代码:

Worksheets("Data").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$BN$235").AutoFilter Field:=4, Criteria1:="=COUNTIFS(DOB," >= "&R[1]C,DOB,""<=""&R[1]C[1])"

ActiveWindow.SmallScroll Down:=-9
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Set NewSheet = Sheets.Add(After:=Worksheets("error"))
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
NewSheet.Name = "DOBrange"
NewSheet.Range("A1").Select
Application.CutCopyMode = False

Worksheets("Data").Select
Worksheets("Data").Range("A1").Select

2 个答案:

答案 0 :(得分:2)

您似乎尝试通过选择两个日期之间的值来过滤行,但是您的条件是您要选择等于某事物的值(这似乎是试图说所有值等于具有日期的值的数量在其他两个日期之间 - 如果五个日期在该范围内,您试图说过滤以显示5的所有值。

在两个日期之间选择值的正确方法是:

ActiveSheet.Range("$A$1:$BN$235").AutoFilter _
                   Field:=4, _
                   Criteria1:=">=" & Worksheets("Error").Range("A20").Value2, _
                   Operator:=xlAnd, _
                   Criteria2:="<=" & Worksheets("Error").Range("B20").Value2

(假设两个日期在工作表的单元格A20和B20中,#34;错误&#34;)

答案 1 :(得分:0)

您在criteria1声明中遇到问题

Criteria1:="=COUNTIFS(DOB," >= "&R[1]C,DOB,""<=""&R[1]C[1])"

您可以看到&gt; =的文字颜色为黑色而其他颜色为棕色。这意味着vba将比较“= COUNTIFS(DOB,”和“&amp; R [1] C,DOB,”“&lt; =”“&amp; R [1] C [1])”然后criteria1将为True或假。所以你不会得到你的条件不同的结果

以下代码可能会解决此问题

Criteria1:="=COUNTIFS(DOB, "">=""" & R[1]C & ",DOB,""<=""" & R[1]C[1] & ")"