【范例一】
参考下图,若要计算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))
拓展思维:如果你在 Excel 的工作表中要实现 Select … Case 多选一的程序逻辑,该如何处理?(参考下图)
【程序】
Dim k, sum As Integer
sum = 100
k = InputBox("请输入一个数字")
Select Case k
Case 1 : sum = sum + k
Case 2 : sum = sum - k
Case 3 : sum = sum * k
Case 4 : sum = sum / k
End Select
Debug.Print(sum)
在 Excel 中可以透过 CHOOSE 函数来执行多选一的逻辑设计:
单元格E2:=CHOOSE(B3,D3+B3,D3-B3,D3*B3,D3/B3)
单元格B3(=k)是输入的数字;单元格D3(=sum)是默认值。
单元格F3为 sum 的运算结果。
閱讀更多 老徐漫談 的文章