2016-06-10 131 views
0

在Excel中,我試圖數由17臺包含在31個數據行數。下面的公式可以完成這項工作,但它很麻煩而且沒有動態性。有沒有辦法使用函數或數組公式來改進這個公式?excel如何計算包含數據的行數?

=SUM(IF(SUM(B3:AF3)>0,1),IF(SUM(B4:AF4)>0,1),IF(SUM(B5:AF5)>0,1),IF(SUM(B6:AF6)>0,1),IF(SUM(B7:AF7)>0,1),IF(SUM(B8:AF8)>0,1),IF(SUM(B9:AF9)>0,1),IF(SUM(B10:AF10)>0,1),IF(SUM(B11:AF11)>0,1),IF(SUM(B12:AF12)>0,1),IF(SUM(B13:AF13)>0,1),IF(SUM(B14:AF14)>0,1),IF(SUM(B15:AF15)>0,1),IF(SUM(B16:AF16)>0,1),IF(SUM(B17:AF17)>0,1),IF(SUM(B18:AF18)>0,1),IF(SUM(B19:AF19)>0,1)) 

,我還沒有得到工作可能的答案已經DBCOUNTA()和SUMPRODUCT( - (SUMIFS))。

回答

1

對於這個問題,有三種常用的方法。

第 - ,可以說是最明智的(當然也最容易理解) - 選擇是讓你現有的表內使用額外的列。例如,假設我們使用列AG爲了這個目的,我們將在AG3輸入公式:

=COUNT(B3:AF3)>0

,並根據需要複製下來。

您的計數通過簡單地獲得這之後:

=COUNTIF(AG3:AG19,TRUE)

如果出於某種原因,你不能(或不願確實)使用附加列,那麼有兩個主要選擇。

其中第一個可能是更直觀地理解,雖然從事實,即它是揮發性的,即患有:

=SUMPRODUCT(0+(SUBTOTAL(2,OFFSET(B3:AF3,ROW(B3:AF19)-MIN(ROW(B3:AF19)),))>0))

的替代方案中,非易失性的(因此是優選的,在我的意見)構造,是以下陣列式**

=SUM(0+(MMULT(0+(LEN(B3:AF19)>0),TRANSPOSE(COLUMN(B3:AF19)^0))>0))

問候

**數組公式以同樣的方式爲「標準」的公式不進入。您只需按住CTRL和SHIFT鍵,而不是按下ENTER鍵,然後按ENTER鍵。如果你做得對,你會注意到Excel在公式周圍放置了大括號(儘管不要試圖自己手動插入這些)。

+0

謝謝你的單細胞的解決方案,這些都是我所瞄準!他們還指望包含零位行,但如果我發現並沒有價值,預期答案更換所有0的,說11,返回。 –

+0

啊,道歉。我沒有考慮零將被排除在外,因爲你陳述「計數包含數據行數」,我會考慮零是有效的「數據」。也許你應該說「計算包含非零數字的行數」?也就是說,如果你喜歡,我可以修改我的解決方案嗎? –

+0

你是對的,我一定打字的速度比我想象的要快。如果沒什麼麻煩的話,你可以添加一個解決方案來計算包含非零數字的行,這樣我可以相比之下學習嗎? –

0

如果你只有17行,然後嘗試:

=(COUNTA(1:1)>0)+(COUNTA(2:2)>0)+(COUNTA(3:3)>0)+(COUNTA(4:4)>0)+(COUNTA(5:5)>0)+(COUNTA(6:6)>0)+(COUNTA(7:7)>0)+(COUNTA(8:8)>0)+(COUNTA(9:9)>0)+(COUNTA(10:10)>0)+(COUNTA(11:11)>0)+(COUNTA(12:12)>0)+(COUNTA(13:13)>0)+(COUNTA(14:14)>0)+(COUNTA(15:15)>0)+(COUNTA(16:16)>0)+(COUNTA(17:17)>0) 
相關問題