頁: [1]
|
 |
|
作者
|
主題: 「--」代表什麼 (閱讀 1478 次)
|
yrbo
中學生
離線
文章: 39
|
常在公式中看見 -- ,不知代表著什麼意義。請前輩指點
|
|
|
|
|
已記錄
|
|
|
|
|
gong
|
負負得正 將邏輯符號轉為0或1
|
|
|
|
|
已記錄
|
|
|
|
yrbo
中學生
離線
文章: 39
|
還是不太了解? 引用http://gb.twbts.com/index.php/topic,4581.0.html中的資料 由bosco_yip所解答的公式SUMPRODUCT(--(C6:C25&G6:G25="A"&TRUE)) SUMPRODUCT的公式為SUMPRODUCT(array1,array2,array3,...) 那「--」也是等於一個array嗎?
|
|
|
|
|
已記錄
|
|
|
|
bosco_yip
版主
離線
文章: 690
|
SUMPRODUCT 的公式 "語法" 為 :
SUMPRODUCT(array1,array2,array3,...)
SUMPRODUCT(陣列1,陣列2,陣列3,...) -->> 陣列是可以計算的 "數值"
"中文EXCEL简体版为 SUMPRODUCT(数组1,数组2,数组3,...)"
分析SUMPRODUCT公式中的陣列(数组) :
SUMPRODUCT(--(C6:C25&G6:G25="A"&TRUE)) -- >> 這個公式, 祇有一個陣列(数组)
SUMPRODUCT({ 陣列 }) -->> 陣列(数组)一定是"數值"
{C6:C25&G6:G25="A"&TRUE} -->> 公式為條件公式, 返回的為 "邏輯值"
{TRUE,TRUE,FALSE,FALSE …...} -->> TRUE 和 FALSE 為 "邏輯值", "邏輯值" 不是 "數值", "邏輯值"不能計算的
借助, "逆寫正號符" 「--」 -->> 將 --{TRUE} 轉變為 1 和 將 --{FALSE} 轉變為 0
--{TRUE,TRUE,FALSE,FALSE …...} -->> 在"邏輯值"前, 加上"正號符的逆寫法" 「--」
{1,1,0,0……} -->> "邏輯值" 轉變為 "數值" , 數值的陣列(数组), 便可以計算了
=SUMPRODUCT({1,1,0,0……}) -->> 轉為 "數值" 後, 函數便能傳回結果
|
|
|
|
« 最後編輯時間: 2008-04-12, 20:23:30 由 bosco_yip »
|
已記錄
|
|
|
|
yrbo
中學生
離線
文章: 39
|
謝謝bosco_yip費心的指點,我瞭解了。難怪我用"公式評估"只看見true,false等邏輯值,原來是將這些條件的邏輯值轉成可用的數值。 真的感謝您!!
|
|
|
|
|
已記錄
|
|
|
|
maomin
中學生
離線
文章: 58
|
謝謝 bosco_yip大大的精彩解說 對於 轉值符號 一直還是處於懵懵懂懂的 經由這個例子,更清楚明白了
引用 http://gb.twbts.com/index.php/topic,4581
有一點小疑問,就是
當邏輯值相乘的時候,是不是就可以得出數字
SUMPRODUCT((C6:C25="a")*(G6:G25=TRUE)) 以上這個公式結果應該是 {true;false;false;false;true......}*{true;true;true;false.....}
那是不是 true*true =1 true*false=0 所以這樣公式就不用加轉值符號 是這樣的嗎??煩請賜教
|
|
|
|
|
已記錄
|
|
|
|
bosco_yip
版主
離線
文章: 690
|
邏輯值( Boolean value) 轉變為數值(numeric value), 方法 :
1] "邏輯值" 與 "邏輯值" 相乘
TRUE x TRUE = 1
FALSE x FALSE = 0
TRUE x FALSE = 0
FALSE x TRUE = 0
2] "邏輯值" 與 "數值" 相乘
TRUE x 1 = 1
FALSE x 1 = 0
3] "邏輯值" 前加上"逆寫正號符" 「--」
=--{TRUE} = 1
=--{FALSE} = 0
4] "邏輯值" 後加上 "運算值" 「+0」, 「*1」, 「/1」
={TRUE}+0 = 1 ; ={FALSE}+0 = 0
={TRUE}*1 = 1 ; ={FALSE}*1 = 0
={TRUE}/1 = 1 ; ={FALSE}/1 = 0
|
|
|
|
« 最後編輯時間: 2007-05-24, 23:10:32 由 bosco_yip »
|
已記錄
|
|
|
|
bosco_yip
版主
離線
文章: 690
|
SUMPRODUCT函數的「--」「*」和「,」的意義和用法
SUMPRODUCT函數, 條件加總, 現時有三種寫法, 例如 :
[ 寫法一] =SUMPRODUCT((A1:A5="a")*(B1:B5=TRUE)*C1:C5)
[ 寫法二] =SUMPRODUCT((A1:A5="a")*(B1:B5=TRUE),C1:C5)
[ 寫法三] =SUMPRODUCT(--(A1:A5="a"),--(B1:B5=TRUE),C1:C5)
以上三種寫法中, 第一種和第二種寫法, 在中國及台灣的論壇, 較常見到, 而第三種寫法, 則比較少見
但是第三種寫法, 在外國論壇, 巳經流行多時, 而且大部份的老外MVP, 都採取此種方法.
基礎上, 三種方法, 都能傳回正確結果, 分別祇在運算効率上, 現分析如下 :
( 一 ) 寫法分析
在幫助文件中 SUMPRODUCT 語法為 :
=SUMPRODUCT(array1,array2,…...array30)
或
=SUMPRODUCT(陣列1, 陣列2,……...陣列30)
留意每一個" 陣列" 與另一個 "陣列" 之間, 都用 "," 豆號作為分隔
[寫法一]
1.1 公式演變次序 :
=SUMPRODUCT((A1:A5="a")*(B1:B5=TRUE)*C1:C5)
第1步 =SUMPRODUCT({TRUE;FALSE;TRUE;FALSE;FALSE;FALSE}*{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}*{12;11;68;12;121;41})
第2 步=SUMPRODUCT({12;0;68;0;0;0})
第3 步 =80
1.2 陣列個數 :
=SUMPRODUCT(陣列1)
公式中沒有 "," 豆點, 所以衹有一個陣列
[寫法二]
2.1 公式演變次序 :
=SUMPRODUCT((A1:A5="a")*(B1:B5=TRUE),C1:C5)
第1步 =SUMPRODUCT({TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}*{TRUE;TRUE;TRUE;TRUE;FALSE;FALSE},{68;12;121;41;0;0})
第2 步 =SUMPRODUCT({1;0;1;0;0;0},{12;11;68;12;121;41})
第3 步 =80
2.2 陣列個數 :
=SUMPRODUCT(陣列1, 陣列2 )
公式有一點 "," 豆點, 所以有兩個陣列
[寫法三]
3.1 公式演變次序 :
=SUMPRODUCT(--(A1:A5="a"),--(B1:B5=TRUE),C1:C5)
第1步 =SUMPRODUCT({1;0;1;0;0;0},{1;1;1;1;1;1},{12;11;68;12;121;41})
第2 步 =80
3.2 陣列個數 :
=SUMPRODUCT(陣列1, 陣列2, 陣列3 )
公式有兩點 "," 豆點, 所以有三個陣列
( 二 ) 効率分析
[寫法一] 和 [寫法二] , 都要三步次序, 才能返回結果
[寫法三] , 衹需兩步次序, 就能返回結果
結論是 :
[寫法三] 効率最快, 運算速度, 估計 [寫法三] 比較 [ 寫法一] 和 [ 寫法二], 快約 0.5% 至2.0%
但因為 運算速度相差不大, 所以3種寫法, 都可以接受為一致的 ( 三 ) 錯誤的寫法
錯誤1 =SUMPRODUCT(--(A1:A5="a")*(B1:B5=TRUE)*C1:C5)
錯誤2 =SUMPRODUCT(--(A1:A5="a")*(B1:B5=TRUE),C1:C5)
其實這兩個公式, 都不須要加上"逆寫正號符"「--」的
這兩種錯誤寫法, 我在論壇都常見過.
雖然傳回結是正確的, 祇是覺得他對「--」的用法, 不了解罷
希望論壇朋友, 能明白公式中 「--」 「*」 和 「,」 的意義和用法, 避免錯誤.
|
|
|
|
« 最後編輯時間: 2007-05-24, 23:33:36 由 bosco_yip »
|
已記錄
|
|
|
|
maomin
中學生
離線
文章: 58
|
非常感謝bosco_yip大大詳盡精彩的解說 而已又是晚上11點多po的文章 真的覺得這裡是一個好地方 有那麼多的先進在此默默的替別人解決問題 各位大大們,辛苦了 
|
|
|
|
|
已記錄
|
|
|
|
|
|
|
頁: [1]
|
|
|
|