Vba 根据日期范围计算列数
我是VBA新手。我试图在VBA中完成下面的事情,但不确定如何做到这一点Vba 根据日期范围计算列数,vba,excel,date,Vba,Excel,Date,我是VBA新手。我试图在VBA中完成下面的事情,但不确定如何做到这一点 在“延迟”表中的“K”列中,我的日期格式为“11/10/2016 16:17”。(列中将有多个日期) 在“O”列中,单元格中有几个值“通过”或“失败” 我想做的是,当脚本运行时,它应该首先弹出一个对话框,要求用户输入日期范围。一旦用户给出日期范围,它应该选择该列,并在“o”列中查找“Pass”,计算值并在特定单元格中更新 我尝试了以下代码,但不确定如何使用日期范围条件添加计数值: Sub WBR() Dim s As Str
Sub WBR()
Dim s As String
Dim r As Range
Dim wf As WorksheetFunction
Dim xlSheet As Worksheet
Set xlSheet = ActiveWorkbook.Worksheets("Latency") 'sets the worksheet
Set wf = Application.WorksheetFunction
Set r = xlSheet.Range("O:O") 'sets the range to search
s = "Pass"
[AE4] = wf.CountIf(r, s)
s = "Fail"
[AE5] = wf.CountIf(r, s)
With ActiveWorkbook.Worksheets("TT")
[AE119] = wf.CountIfs(.Range("G:G"), "Yes", _
.Range("K:K"), "Tablet")
End With
With ActiveWorkbook.Worksheets("TT") 'no of tickets processed
[AE119] = wf.CountIfs(.Range("G:G"), "Yes", _
.Range("I:I"), "<>Duplicate TT", _
.Range("K:K"), "Tablet")
End With
子WBR()
像线一样变暗
调光范围
将wf设置为工作表功能
将工作表设置为工作表
Set xlSheet=ActiveWorkbook.Worksheets(“延迟”)设置工作表
设置wf=Application.WorksheetFunction
Set r=xlSheet.Range(“O:O”)'设置要搜索的范围
s=“通过”
[AE4]=wf.CountIf(r,s)
s=“失败”
[AE5]=wf.CountIf(r,s)
使用ActiveWorkbook.Worksheets(“TT”)
[AE119]=wf.CountIfs(.Range(“G:G”),“是”_
.范围(“K:K”),“片剂”)
以
使用ActiveWorkbook.Worksheets(“TT”)处理的票证数量
[AE119]=wf.CountIfs(.Range(“G:G”),“是”_
.范围(“I:I”),“重复TT”_
.范围(“K:K”),“片剂”)
以
End Sub这只是对现有代码的一个细微变化:
Sub WBR()
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
Dim MinDate As String
Dim MaxDate As String
MinDate = InputBox("Minimum Date")
MaxDate = InputBox("Maximum Date")
If Not (IsDate(MinDate) And IsDate(MaxDate)) Then
MsgBox "You should have specified valid dates!"
Exit Sub
End If
If CDate(MinDate) > CDate(MaxDate) Then
MsgBox "You should have specified sensible dates!"
Exit Sub
End If
With ActiveWorkbook.Worksheets("Latency")
[AE4] = wf.CountIf(.Range("O:O"), "Pass")
[AE5] = wf.CountIf(.Range("O:O"), "Fail")
[AE6] = wf.CountIfs(.Range("K:K"), ">=" & CLng(CDate(MinDate)), _
.Range("K:K"), "<=" & Clng(CDate(MaxDate)), _
.Range("O:O"), "Pass")
End With
With ActiveWorkbook.Worksheets("TT")
[AE119] = wf.CountIfs(.Range("G:G"), "Yes", _
.Range("K:K"), "Tablet")
'no of tickets processed
[AE119] = wf.CountIfs(.Range("G:G"), "Yes", _
.Range("I:I"), "<>Duplicate TT", _
.Range("K:K"), "Tablet")
End With
End Sub
子WBR()
将wf设置为工作表功能
设置wf=Application.WorksheetFunction
模糊的心弦
将MaxDate设置为字符串
MinDate=输入框(“最小日期”)
MaxDate=输入框(“最大日期”)
如果不是(IsDate(MinDate)和IsDate(MaxDate)),则
MsgBox“您应该指定有效日期!"
出口接头
如果结束
如果CDate(MinDate)>CDate(MaxDate),则
MsgBox“您应该指定合理的日期!"
出口接头
如果结束
使用ActiveWorkbook.Worksheets(“延迟”)
[AE4]=wf.CountIf(.Range(“O:O”),“Pass”)
[AE5]=wf.CountIf(.Range(“O:O”),“Fail”)
[AE6]=wf.CountIfs(.Range(“K:K”),“>=”&CLng(CDate(MinDate))_
.Range(“K:K”),“@walterwhile-还请注意,您最近的两个CountIfs
当前正在将其结果存储在同一个单元格中。我已经厌倦了运行上述代码,但它在一个不寻常的地方显示了语法错误,在此之前没有出现错误:使用ActiveWorkbook.Worksheets(“Latency”)[AE4]=wf.CountIf(.Range(“O:O”,“Pass”)[AE5]=wf.CountIf(.Range(“O:O”,“Fail”)
@YowE3K@walterwhile-抱歉-我丢失了)
范围(“O:O”)
末尾的-我将编辑答案,并将对此进行测试。另一个基于条件的问题。假设是列“X”有A,B,C,D。我想要计数,如果它只有A或只有B,或者X列有A和B,以及另一列的另一个条件。我该如何设置这个条件?@walterwhile-你的意思是(X有一个“A”)或(X有一个“B”)或(X有一个“A”或“B”,而Y列有一个“Z”)?这与(X有一个“A”)或(X有一个“B”)相同。但是如果你的意思是(X有一个“A”)或(X有一个“B”)或(X有两个“A”和“B”,列Y有“Z”),那么这就是零-一列中的一行(即单元格)不能同时包含两个值。