在Google表格中,我想计算范围string name = System.IO.Path.GetFileName(path);
int output;
bool isNumeric = int.TryParse(name[0].ToString(), out output);
if(isNumeric)
Console.WriteLine(System.IO.Path.GetFileName(path));
中非空和非空白的单元格数。使用(C4:U4)
可以轻松计算非空。棘手的问题似乎是我想将一个或多个空白的单元格视为空。 (我的用户继续将空白留在不可见的单元格中,我浪费了很多时间来清理它们。)
COUNTIF
将具有一个或多个空格的单元格视为非空白并对其进行计数。我也试过了=COUNTIF(C4:U4,"<>")
,但是这个问题与使用一个或多个空格计数细胞一样。
我发现stackoverflow中的一个解决方案被95人标记为解决方案,但它不适用于有空白的单元格。
经过多次阅读,我想出了一个奇特的公式:
=COUNTA(C4:U4)
这个想法是=COUNTIF(FILTER(C4:U4,TRIM(C4:U4)>="-"),"<>")
在TRIM
测试单元格大于或等于连字符(我能找到的可打印字符的最低顺序)之前删除前导空格和尾随空格。然后FILTER
函数将一个数组返回给FILTER
函数,该函数只包含非空和非空单元格。 COUNTIF
然后针对“&lt;&gt;”进行测试
这有效(或者至少“似乎”起作用),但我想知道我是否错过了一些非常明显的东西。当然,隐藏空白的问题是非常普遍的,并且自excel和google表格出现以来一直存在。必须有一个更简单的方法。
(我的第一个问题对任何违反论坛规则的行为表示歉意。)
答案 0 :(得分:1)
可以试试这个,但我一点也不确定
=SUMPRODUCT(--(trim((substitute(A2:A5,char(160),"")))<>""))
似乎这是由于不间断的空间,并且可能也适用于Excel - 正如here所解释的那样 - 建议您也可以通过CLEAN函数传递它以消除范围内代码的不可见字符0-31。
答案 1 :(得分:1)
我不了解Google。但对于Excel,您可以将此数组公式用于多个连续列:
=ROWS(A1:B10) * COLUMNS(A1:B10)-(COUNT(IF(ISERROR(CODE(A1:B10)),1,""))+COUNT(IF(CODE(A1:B10)=32,1,"")))
答案 2 :(得分:1)
我找到了另一种方法:
=ARRAYFORMULA(SUM(IF(TRIM($C4:$U4)<>"",1,0)))
如果可以的话,我仍然在寻找一种更简单的方法。
答案 3 :(得分:1)
这应该有效:
=countif(C4:U4,">""")
我在这里找到了这个解决方案:
Is COUNTA counting blank (empty) cells in new Google spreadsheets?
请告诉我是否可以。
答案 4 :(得分:0)
=COLUMNS(C4:U4)-COUNTBLANK(C4:U4)
这将计算您的范围内有多少个单元格(C4至U4 = 19个单元格),并减去真正为“空”的单元格。
COUNTBLANK
不会计入空格,尽管其名称应为COUNTEMPTY
。