worklecfunction.countifs在计算非空单元格时在VBA代码中给出错误

问题描述 投票:0回答:2

我有

Dim tape, out As Worksheet
Set tape = ThisWorkbook.Sheets("Agg")
Set out = ThisWorkbook.Sheets("output")

out.Cells(1, 2).Value = WorksheetFunction.CountIfs(tape.Range("IG1:IG10000"), "<>" & "", "<>" & " ", "<>" & "  ")

所以一般来说,我说“算一下,如果不是空白,不是单个空格,不是两个空格”。我想要做的是计算非空白值,同时考虑到单元格中可能有空格。但是这最后一行继续给我这个错误:“无法获取工作表函数类的Countifs属性”。我怎样才能使它工作?谢谢!

excel vba excel-vba worksheet-function countif
2个回答
1
投票

也许尝试类似的东西

out.Cells(1, 2).Value = tape.Evaluate("=SUM(IF(TRIM(IG1:IG10000)<>"""",1,0))") 

这将忽略任何只有空格的单元格。


0
投票

Countifs(..)作为一组AND语句,而不是OR语句 - 例如如果您有Surname / Forename / Gender,则代码=COUNTIF(A:A,"Smith",C:C,"Female")将计算Smith家族中的女性。 (您还必须单独指定每个列)

我可以提供的两个解决方案是A)有一个宏将TRIM应用于UsedRange和Columnd IG交叉点中的每个单元格,使得开始/结束处的所有空格都消失(如果LEN为0,则可能清除单元格? )或B)使用COUNTA获取非空白,然后减去其他条件:

Dim tape AS Worksheet, out As Worksheet, rTEMP as Range
Set tape = ThisWorkbook.Sheets("Agg")
Set out = ThisWorkbook.Sheets("output")

Set rTEMP = tape.Range("IG1:IG10000") 'Any specific reason for not just using the whole column IG:IG?

out.Cells(1, 2).Value = WorksheetFunction.CountA(rTEMP) - (WorksheetFunction.CountIfs(rTEMP,"<>",rTEMP,"""")+WorksheetFunction.CountIf(rTEMP," ")+WorksheetFunction.CountIf(rTEMP,"  ")) 'count of Non-blank cells minus the sum of counts for Non-blank 0-length, non-blank 1-space and non-blank 2-spaces

Set rTEMP = Nothing

(检查非空白的0长度单元格是一种特殊情况,因此它使用CountIf)

© www.soinside.com 2019 - 2024. All rights reserved.