各位同学数学课中肯定学习过杨辉三角形,英文名称Pascal’s triangle,其实还是多种不同的类似金字塔。
接下来我们看一下如果使用VBA创建如下图所示的数字金字塔。

示例代码如下。
Sub Demo()
Dim arrDigit()
intRow = 10
iNum = 1
intCol = intRow * 2 - 1
ReDim arrDigit(1 To intRow, 1 To intCol)
For i = 1 To intRow
For j = intRow - (i - 1) To intRow + (i - 1)
arrDigit(i, j) = iNum
iNum = iNum + 1
Next j
Next i
ActiveSheet.Cells.Clear
[A1].Resize(intRow, intCol) = arrDigit
End Sub
【代码解析】
代码实现其实很简单,重要的是找到数字排练的规律,简单总结:对于第n行,第一个数字位于(总行数-n+1)列,最后一个数字位于(2*n-1)列。
第3行代码设置金字塔共10层。
第4行代码设置数字的初始值。
第5行代码计算最大列数。
第6行代码重新声明态数组,用于保存结果。
第7~12行代码使用双重循环创建数组金字塔。
第7行代码循环变量i为行数(金字塔的层数)。
第8行代码循环变量j为列数。
第9行代码将数字保存在结果数组中。
第13行代码清空工作表。
第14行代码将结果写入工作表。
如果需要创建多种不同层数、不同起始数字的金字塔,大家可用将上述代码改造成带参数的Sub过程。