在調試窗口中,以下表達式全部返回一個。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