close

Google試算表畫面    

日前因課程的需要,使用Google試算表撰寫函數…使用上相當便利,畫面也還算流暢,只是偶爾需要等待網路Loading的情況會拖慢使用效率,不過大致上還算不錯!只是……最後要下載成.xlsx會有函數計算上的問題,只要在MS-Excel解除受保護的檢視狀態下…使用sumproduct的所有統計值都無法呈現,結果都為「0」…

Google試算下載成MS-Excel  
解除受保護的檢視就………掛了!

未取消受保護的檢視  
未解除受保護的檢視(即是未啟用編輯)…那函數的呈現就會是正常的!

 

後來……認真看了一下,原來是前操作者把函數撰寫方式用錯了,邏輯運算與數值運算混在一起了!

在Excel或試算表中『sumproduct』函數用法是
= sumproduct(array1,array2,array3,...)

一般容易將這個函數輸入成
= sumproduct(A1:A100, B1:B100<>"a",C1:C200=A1)

以上輸入會造成數值回傳錯誤,結果總是返回0……這種輸入式的錯誤很容易被忽略,且部份的軟體相容性高也能正常運算(例如:Google試算表),原因只有一個…sumproduct內中的“array”應為「數值運算」為一組陣列,錯誤輸入函數的例子中「A1:A100」僅此數為Sum的計算總合寫法即是「數值運算」,而其餘的「B1:B100<>"a"」、「C1:C200=A1」等…皆為「邏輯運算」~~於是,要將所有的邏輯運算修正為「數值運算」…這有很多方法~通常,我的方法是很北七的…

= sumproduct(A1:A100, (B1:B100<>"a")+0,(C1:C200=A1)+0)

= sumproduct(A1:A100, (B1:B100<>"a")*1,(C1:C200=A1)*1)

= sumproduct(A1:A100, N(B1:B100<>"a"),N(C1:C200=A1))

= sumproduct(A1:A100, --(B1:B100<>"a"),--(C1:C200=A1))

= sumproduct(A1:A100, (B1:B100<>"a")*(C1:C200=A1))

 

這樣修正…就可以搞定結果總是「0」的“邏輯與數值”的問題
結論是……函數用得對,答案就會對!XDDDD

arrow
arrow
    全站熱搜

    Wan 發表在 痞客邦 留言(0) 人氣()