Microsoft Lab
全部软件
Excel数组(Array)约 3 分钟

Dynamic Array 动态数组

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


建立动态数组

  1. 宣告一个还不知道大小的数组:
Dim numbers() As Integer, size As Integer, i As Integer
  1. 先算出实际要用的大小(例如 A 列有几笔数据):
size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
  1. 用 ReDim 把数组调整成这个大小:
ReDim numbers(size)
  1. 用循环把数据逐一塞进数组:
For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i
  1. 显示结果:
MsgBox numbers(size)

ReDim 会清空原本的数据

ReDim numbers(3)
MsgBox numbers(1)   ' 结果是空的,原本存的数据被清空了

加 Preserve 保留原本的数据

ReDim Preserve numbers(3)
MsgBox numbers(1)   ' 原本的数据还在

📌 关键规则:ReDim 调整数组大小时,会把里面原有的数据全部清空;如果想保留原本的数据,一定要加 Preserve 关键字。


ReDim 怎么选

写法效果适合场景
ReDim numbers(3)调整大小,原有数据全部清空数组要重新装一批全新的数据
ReDim Preserve numbers(3)调整大小,原有数据保留数组要一边扩充一边保留已存的数据

学完你会

常见错误

  • 用 ReDim 调整大小后忘记加 Preserve,原本存好的数据全部消失
  • 数组大小算错(比如漏算标题行),size 变量跟实际数据笔数对不上
  • 循环范围写死,数据笔数变动后忘记同步调整 ReDim 的大小

Sources

Blog / Website:

  1. Dynamic Array
只记在你的浏览器里,换设备不会同步。