2018年3月19日 星期一

Excel-模擬程式語言的廻圈運算(SUMPRODUCT,MOD,ROW)

近來,大家都在討論運算思維!今天上課的學生約略有程式設計的概念,所以用以下的例子來和 Excel 建立關聯。

【範例一】
參考下圖,若要計算1~100的總和,可以善用 Excel 試算的特性,於儲存格B3建立公式:=B2+A3,再複製儲存格B3,貼至儲存格B3:B101。(共100個)
其最後結果,儲存格B101的內容為5050,即為1+2+3+ … + 100的總和。
Excel-模擬程式語言的廻圈運算(SUMPRODUCT,MOD,ROW)
如果,你是使用程式來運算,程式範例如下:
Dim sum As Integer
For i = 1 To 100
 Sum = Sum + i
Next
Debug.Print(Sum)
也可以使用陣列公式:
公式:{=SUM(ROW(1:100))}
輸入完成要Ctrl+Shift+Enter鍵,Excel 會自動加「{}」。
其中ROW(1:100)在陣列公式中代表ROW(1:1)=1、ROW(2:2)=2、...、ROW(100:100)=100。
或是使用 SUMPRODUCT 函數:
公式:=SUMPRODUCT(ROW(1:100))

【範例二】
如果改成要計算1+3+…+99(奇數和),該如何處理?
Excel-模擬程式語言的廻圈運算(SUMPRODUCT,MOD,ROW)
程式範例如下:
Dim sum As Integer
For i = 1 To 99 Step 2
 Sum = Sum + i
Next
Debug.Print(Sum)
也可以使用陣列公式:
公式:{=SUM(ROW(1:99)*(MOD(ROW(1:99),2)))}
輸入完成要Ctrl+Shift+Enter鍵,Excel 會自動加「{}」。
MOD(ROW(1:99),2):如果除以 2 的餘數為 0,表示為偶數;如果除以 2 的餘數為 1,表示為奇數。在此 0/1 分別代表 FALSE/TRUE
ROW(1:99)*(MOD(ROW(1:99),2))=ROW(1:99)*(FALSE/TRUE陣列),其結果只會留下奇數部分,再透過 SUM 函數予以加總。
或是使用 SUMPRODUCT 函數:
公式:=SUMPRODUCT(ROW(1:99)*(MOD(ROW(1:99),2)))

【範例三】
如果改成要計算1+4+…+100(間隔3的數之和),該如何處理?
(請自行練習)
Excel-模擬程式語言的廻圈運算(SUMPRODUCT,MOD,ROW)
公式:{=SUM(ROW(1:100)*(MOD(ROW(1:100),3)=1))}
公式:=SUMPRODUCT(ROW(1:100)*(MOD(ROW(1:100),3)=1))

沒有留言:

張貼留言

檢視其他文章

好康東東