Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA CountIfs忽略参数_Vba_Excel - Fatal编程技术网

VBA CountIfs忽略参数

VBA CountIfs忽略参数,vba,excel,Vba,Excel,我的应用程序.WorksheetFunction.CountIfs下面的代码有以下问题 当我做计数的时候,让它看起来像是一个单词“TER”,它就起作用了 当我在两个日期之间进行计数时,它是有效的 当我把我说的论点放在一起时,它只是在日期之间计数,就像countifs忽略了论点一样,我想在列中计算TER这个词。 我做了很多研究,但找不到有帮助的东西。已尝试在“TER”中加上两个引号 多谢各位 Dim TerminPerio As Integer, IniRAM As Date, FimRAM As

我的
应用程序.WorksheetFunction.CountIfs
下面的代码有以下问题

当我做计数的时候,让它看起来像是一个单词“TER”,它就起作用了

当我在两个日期之间进行计数时,它是有效的

当我把我说的论点放在一起时,它只是在日期之间计数,就像countifs忽略了论点一样,我想在列中计算TER这个词。 我做了很多研究,但找不到有帮助的东西。已尝试在“TER”中加上两个引号

多谢各位

Dim TerminPerio As Integer, IniRAM As Date, FimRAM As Date
Dim NecessTOT As Integer

IniRAM = #12/1/2016#           
FimRAM = #12/31/2016#

NecessTOT = Application.WorksheetFunction.CountIfs(Range("L:L"), "TER", Range("I:I"), ">=" & CDbl(IniRAM), Range("I:I"), "<=" & CDbl(FimRAM)) 
'NecessTOT = Application.WorksheetFunction.CountIfs(Range("L:L"), "TER")
'NecessTOT = Application.WorksheetFunction.CountIfs(Range("I:I"), ">=" & CDbl(IniRAM), Range("I:I"), "<=" & CDbl(FimRAM)) 

MsgBox (CStr(NecessTOT))

End Sub
Dim TerminPerio为整数,IniRAM为日期,FimRAM为日期
Dim NecessTOT作为整数
IniRAM=#12/1/2016#
FimRAM=#12/31/2016#

NecessTOT=Application.WorksheetFunction.CountIfs(Range(“L:L”)、“TER”、Range(“I:I”)、“>=”和CDbl(IniRAM)、Range(“I:I”)、“=”和CDbl(IniRAM)、Range(“I:I”)、“谢谢大家的帮助。 我的计数解决方案是做其他事情: 简而言之,为了得到我想要的结果,我对列进行了一些顺序自动筛选,复制了受影响的行,并使用另一个命令行计算了寄存器的数量

例如:

Selection.AutoFilter
    ActiveSheet.Range("$L$1:$L" & LR).AutoFilter Field:=27, Criteria1:=CStr(MESRAM)
    ActiveSheet.Range("$AK$1:$AK" & LR).AutoFilter Field:=28, Criteria1:=CStr(ANORAM)
    ActiveSheet.Range("$AE$1:$AE" & LR).AutoFilter Field:=29, Criteria1:=CStr(MESRAM)

LR = Cells(Rows.Count, "A").End(xlUp).Row

谢谢大家的帮助。 我的计数解决方案是做其他事情: 简而言之,为了得到我想要的结果,我对列进行了一些顺序自动筛选,复制了受影响的行,并使用另一个命令行计算了寄存器的数量

例如:

Selection.AutoFilter
    ActiveSheet.Range("$L$1:$L" & LR).AutoFilter Field:=27, Criteria1:=CStr(MESRAM)
    ActiveSheet.Range("$AK$1:$AK" & LR).AutoFilter Field:=28, Criteria1:=CStr(ANORAM)
    ActiveSheet.Range("$AE$1:$AE" & LR).AutoFilter Field:=29, Criteria1:=CStr(MESRAM)

LR = Cells(Rows.Count, "A").End(xlUp).Row

您的意思是,您的解决方案也会计算与日期匹配但与范围
L:L
中的条件不匹配的行数吗?我输入了您的代码,对我来说,它工作正常。您是否在Excel工作表中复制了相同的函数?如果是,结果是正确的,或者与VBA中的结果相同?两个日期之间的所有值是否也有“TER”“在L列中?如果是,那么答案显然将与您只计算两个日期之间的行数相同。只有当您有一些非-TER时,答案才会减少。”列L中的值。您的意思是您的解决方案也计算与日期匹配但不符合范围
L:L
中条件的行吗?我输入了您的代码,对我来说,它工作正常。您是否在Excel工作表中复制了相同的函数?如果是,结果是正确的或与VBA中的相同?是否所有介于两个日期之间的值都相同在L列中也有“TER”吗?如果是这样,那么答案显然将与计算两个日期之间的行数相同。只有在L列中有一些非“TER”值时,答案才会减少。