2010年11月18日 星期四

Excel-產生連續的數列來運算

在 Excel 中的基本單位是儲存格,以程式的角度來看,每個儲存格相當於一個記憶體,而每個記憶體可以當成一個變數使用,也可以將儲存格中的內容當為常數使用。所以當你要計算1+2+3+ … +100的運算時,可以在100個儲存格中產1~100的數字,再將這些儲存格作SUM運算,很容易就可以得到答案。

你可以有更簡單的做法。配合陣列運算和ROW、INDIRECT函數,可以產生連續的數列。

例如:

存格陣列公式:{ROW($A$1:INDIRECT("A"&A2))}

若儲存格A2的內容為:10,則

ROW($A$1:INDIRECT("A"&A2))

= ROW($A$1:INDIRECT("A10"))

= ROW($A$1:$A10)

如果使用陣列公式,則

{ROW($A$1:$A10)}

={ROW(A1),ROW(A2), … , ROW(A10)}

={1,2,3,4,5,6,7,8,9,10}

如此可以產生1~10的陣列。

現在,要利用這個觀念來做各種運算。

(一)根據頭尾兩個數,計算之間的連續數字和。

儲存格D2:{=SUM(ROW($A$1:INDIRECT("A"&(C2-B2+1))))}

這是陣列公式,輸入完成後,按下 Ctrl+Alt+Enter 鍵,並將儲存格D2向下複製。

(二)計算階層

儲存格B7:{=PRODUCT(ROW($A$1:INDIRECT("A"&A7)))}

其中PRODUCT函數為計算參數的乘積。

(三)判斷是否為質數

儲存格B17:

{=IF(PRODUCT(MOD(A17,ROW($A$2:INDIRECT("A"&INT(A17^0.5)))))<>0,"質數","")}

因為要判斷一個數是否為質數,可以將這個數除以小於自己的整數(只要計算到該數的開根號數即可),如果其中有一個餘數為0,則表示該數有某一個因數存在,所以不是質數。

公式中的$A$2表示要產生2,3,4…的數列(1是所有數的因數,所以不必拿來除),

INT(A17^0.5)為計算該數開根號後的最接近值。

MOD函數可以求得餘數,透過PRODUCT函數判斷這些餘數的相乘積,如果為0,表示至少有一個因數存在(會產生餘數為0的情形),也就是說該數不是質數。

沒有留言:

張貼留言

檢視其他文章

好康東東