在microsoft excel中,當您在sum+if語句中使用邏輯函式and和/或or針對乙個以上的條件測試乙個區域時,測試可能不會如期望的那樣執行。巢狀的if語句可提供此功能;不過,採用另一種方法將會更方便,此方法使用下列公式。
對於
and條件:=sum(if(test1*test2*...*testn))
對於or條件:=sum(if(test1+test2+...+testn))
使用sum+if語句計算某一區域內通過某一給定測試的單元格的數量或對乙個區域內的某些值求和,這些值在另一區域(或同一區域)內對應的值滿足指定的條件。此行為類似於microsoft excel中的dsum函式。
示例:下面的示例將計算區域a1:a10內1到10之間(包括1和10)的值的數目。
為實現此目的,您可以使用下面的巢狀if語句:
=sum(if(a1:a10>=1,if(a1:a10<=10,1,0)))
如果您要進行多次測試,也可以使用下面的方法,它更易讀:
=sum(if((a1:a10>=1)*(a1:a10<=10),1,0))
下面的方法將計算在兩個給定日期之間的日期的數量:
=sum(if((a1:a10>=datevalue("1/10/99"))*(a1:a10<=datevalue("2/10/99")),1,0))
備註:
必須通過同時按ctrl+shift+enter鍵,將這些公式作為陣列公式輸入進去。
陣列不能引用整列。
使用此方法,您實際上是在用一種邏輯測試的結果乘以另一種邏輯測試的結果,並將true和false返回給sum函式。您可以將它們看作是:
true*true=1;
true*false=0;
false*true=0;
false*false=0
以上所示的方法計算了區域a1:a10內在兩種測試中結果均為true的單元格的數量。如要為對應單元格(例如,b1:b10)中的值求和,請像下面這樣修改公式:
=sum(if((a1:a10>=1)*(a1:a10<=10),b1:b10,0))
類似地,您可以在sum+if語句中實現or運算。為此,請修改上述公式,將乘號(*)替換為加號(+)。這樣將得到下面的一般公式:
=sum(if((test1)+(test2)+...+(testn),1,0))
switch語句中使用break???
break是跳出迴圈使用的。而在switch語句中使用switch語句是結束switch語句。比如 switch x 如果沒有break語句,且x 1 的情況下輸出的結果是 這是一樓 這是二樓 這是三樓 這是default語句 這裡大家注意,switch語句中的x並不是判斷,而是從這個開始繼續往下執...
在do while語句中使用continue的誤解
先貼一段 int i 0 dowhile i 10 以前我一直以為,continue就是跳轉到do開始的位置,所以就認為上面這段程式將會是乙個死迴圈。其實卻不然,continue會跳到 處,並不會跳過do while的條件判斷。下面是摘自cppreference上對continue的定義舉例 do ...
C語言中,while 語句中使用賦值語句
while 語句括號中是乙個邏輯表示式,用以判斷while迴圈是否需要繼續執行。可以是賦值語句。while迴圈的一般格式為 while expr body 其中用來判斷迴圈條件的expr可以是任意表示式。當其是賦值語句的時候,含義為 先執行賦值語句,然後對左值進行判斷。如果左值為0則expr為假,w...