近來,大家都在討論運算思維!今天上課的學生約略有程式設計的概念,所以用以下的例子來和 Excel 建立關聯。
【範例一】
參考下圖,若要計算1~100的總和,可以善用 Excel 試算的特性,於儲存格B3建立公式:=B2+A3,再複製儲存格B3,貼至儲存格B3:B101。(共100個)
其最後結果,儲存格B101的內容為5050,即為1+2+3+ … + 100的總和。
如果,你是使用程式來運算,程式範例如下:
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(奇數和),該如何處理?
程式範例如下:
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的數之和),該如何處理?
(請自行練習)
公式:{=SUM(ROW(1:100)*(MOD(ROW(1:100),3)=1))}
公式:=SUMPRODUCT(ROW(1:100)*(MOD(ROW(1:100),3)=1))
留言列表