【问题标题】:VBA CountIfs ignores an argumentVBA CountIfs 忽略一个参数
【发布时间】:2017-01-11 19:02:57
【问题描述】:

我在使用下面的Application.WorksheetFunction.CountIfs 代码时遇到以下问题。

当我做countifs 让它看起来并计数“TER”这个词时,它起作用了。

当我在日期之间进行计数时,它会起作用。

当我把我所说的论点放在一起时,它只是在日期之间计算,就像计数忽略了我想在列中计算单词 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

【问题讨论】:

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

标签: vba excel


【解决方案1】:

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

例子:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多