2011年4月18日 星期一

Excel-陣列中的邏輯運算

在 Excel 中如果能善用「陣列」功能,將可以節省許多撰寫公式的時間,因為陣列可以將多個值放在一個公式中同時運算。

以下分別就陣列中的AND、OR、XOR、NAND等邏輯運算加以說明,先列出相關邏輯運算的真值表:

image

(1) AND運算

[例]求人員丙及(And)產品AAA組合的總和

儲存格G2:{=SUM((A2:A13="丙")*(B2:B13="AAA")*C2:C13)}

公式運算時產生:

   {0,0,0,1,0,0,1,1,0,0,1,1} * {0,1,0,1,0,1,1,0,0,1,1,0} * {C2:C13}

= {0,0,0,1,0,0,1,0,0,0,1,0} * {C2:C13}

= C5,C8,C12

(2) OR運算

[例]求人員乙或(Or)產品BBB者的總和

儲存格G3:{=SUM(IF(((A2:A13="乙")+(B2:B13="BBB"))>0,1,0)*C2:C13)}

公式運算時產生:

   ({0,1,0,0,1,0,0,0,0,1,0,0} + {0,0,1,0,1,0,0,0,0,0,0,1} ) * {C2:C13}

= ({0,1,1,0,2,0,0,0,0,1,0,1}} *  {C2:C13}

經過IF(((A2:A13="乙")+(B2:B13="BBB"))>0,1,0)公式,上式變更為:

= ({0,1,1,0,1,0,0,0,0,1,0,1}} * {C2:C13}

= {C3,C4,C5,C10,C12}

(3) XOR運算

[例]求人員甲和產品CCC組合但排除是甲且CCC產品的總和

由於XOR的觀念是輸入兩個相同時,輸出為0,輸入兩個不同時,輸出為1。

儲存格G4:{=SUM(IF(MOD((A2:A13="甲")+(B2:B13="CCC"),2),1,0)*C2:C13)}

在公式中如果以「+」運算後,找出是否為2的倍數,即可判斷是否為兩個相同或兩個不同。

因此,透過MOD(X,2)的運算,找出對應的{C2:C13}符合的儲存格。

(4) NAND運算

[例]求在總和中排除人員乙且產品AAA的組合

儲存格G5:{=SUM(IF(((A2:A13="乙")+(B2:B13="AAA")=2),0,1)*C2:C13)}

這個式子先找出兩個條件都符合者,設定陣列為0,否則陣列設定為1。

這個運算相當於總和再減掉人員乙AND產品AAA組合的和。

沒有留言:

張貼留言

好康東東