我有
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属性”。我怎样才能使它工作?谢谢!
也许尝试类似的东西
out.Cells(1, 2).Value = tape.Evaluate("=SUM(IF(TRIM(IG1:IG10000)<>"""",1,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)