在调试窗口中,以下表达式全部返回一个。CountA返回0,WorksheetFunction.CountA返回1
Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & ":" & Cells(5 + (i - 1) * rows_per_record, 58))
Application.WorksheetFunction.CountA(ThisWorkbook.Sheets(n).Cells(4 + (i - 1) * rows_per_record, 28) & ":" & ThisWorkbook.Sheets(n).Cells(5 + (i - 1) * rows_per_record, 58))
在这种特殊情况下,范围是AB60:BF61,它在调试窗口中确认。
在工作表中,脚本暂停时,我输入单元格=CountA(AB60:BF61)
,结果为0,这应该是。
任何解释将不胜感激。
Windows 7,Excel 2010
我在想结肠应该是逗号。我会运行一些测试。 – Jeeped
如果这是一个逗号,它将被视为两个单独的论点;每个细胞一个。使用范围将扩大单元格之间的范围。但让我知道,以防万一.. –
是的,无论实际计数如何,您都始终计算** 1 **,因为您将第一个单元格的值连接在一起,然后是一个冒号,然后是最后一个单元格的值。你基本上计算一个总是** 1 **的单个字符串。 YOu必须将它评估为一个工作表函数,使用与冒号连接的单元格地址以这种方式使用它。通过使用Range并提供由逗号分隔的左上角和右下角,我计算整个范围。 – Jeeped