2016-09-12 162 views
-1

在Google表格中,我想計算(C4:U4)範圍內非空且非空白的單元格數量。通過COUNTIF可以輕鬆計數非空。棘手的問題似乎是我想把一個或多個空白的單元格視爲空白。 (我的用戶在不可見的單元格中留下空白,並浪費大量時間清理它們。)COUNTIF of non-empty and non-blank cells

=COUNTIF(C4:U4,"<>")將具有一個或多個空格的單元視爲非空並計數。我也嘗試過=COUNTA(C4:U4),但是這種方法會遇到與一個或多個空白單元格相同的問題。

我發現stackoverflow中的解決方案被95人標記爲解決方案,但它對於帶空格的單元格不起作用。

大量的閱讀後,我想出了一個奇特的公式:

=COUNTIF(FILTER(C4:U4,TRIM(C4:U4)>="-"),"<>") 

的想法是,TRIM除去開頭和結尾的空白FILTER測試細胞之前爲大於或等於一個連字符(中我可以找到可打印字符的最低順序)。 FILTER函數然後返回一個數組到COUNTIF函數,該函數只包含非空和非空白單元格。 COUNTIF然後測試對「<>」

這工作(或至少「似乎」工作),但我想知道如果我錯過了一些真正明顯的東西。隱藏的空白問題當然是非常普遍的,並且自從excel和google工作表開始就已經存在。必須有一個更簡單的方法。

(我的第一個問題,所以對於任何違反論壇規則的歉意。)

+0

什麼是單元*'有一個或多個空白'*? – Jeeped

+0

你的意思是一個沒有任何東西的細胞和一個有空間的細胞? – Brian

+0

@Jeeped你問「什麼是細胞」,有一個或多個空白'「。單元格可以是空的(根本沒有數據),也可以包含通過按空格鍵一次或多次輸入的空格。 –

回答

1

能試試這個,但我不是它

=SUMPRODUCT(--(trim((substitute(A2:A5,char(160),"")))<>"")) 
  • 似乎在谷歌表都確保您我們必須把char(160)與進入單元格的空間相匹配嗎?

看來這是由於非打破空間,並可能適用於Excel中也 - 作爲解釋here - 的建議是,你也可以通過它通過清潔功能,以消除範圍0與代碼不可見的字符-31。

+0

好(簡潔)的解決方案,湯姆!您也可以將其用於多列。 – Brian

+0

謝謝!我認爲我現在理解打破和非打破空間好一點:-) –

+0

@TomSharpe謝謝。我試過你的配方,它的工作,但我必須承認,我不知道爲什麼。我不熟悉SUMPRODUCT,我不明白這兩個破折號。你能解釋這是如何工作的嗎? –

1

我不瞭解Google。但對於Excel的,你可以使用這個數組公式,多個連續的列:

=ROWS(A1:B10) * COLUMNS(A1:B10)-(COUNT(IF(ISERROR(CODE(A1:B10)),1,""))+COUNT(IF(CODE(A1:B10)=32,1,""))) 
+0

這對Google表格以及如果改變32到160或可能使用MOD(CODE( A1:B10),128)= 32來覆蓋這兩種空間 –

+0

@Brian謝謝,我試過了,它對我不起作用,也許這是因爲我的範圍內只有一行(C4:U4),而且我的單元格包含文本,它當然不是比我現在使用的更簡單的公式,這正是我所期望的。 –

1

我找到了另一種方式來做到這一點使用:

=ARRAYFORMULA(SUM(IF(TRIM($C4:$U4)<>"",1,0))) 

我還在尋找一種更簡單的方式,如果做到這一點一個是可用的。