Function FilterArray(arr, minVal, Optional maxVal) ' 声明一个动态数组 newArr 并初始化为长度为 0 的数组 Dim newArr() ReDim newArr(0) ' 初始化数组,长度为 1,此时 newArr(0) 位置有了初始定义,避免留空 ' 声明一个长整型变量 i 用于循环 Dim i As Long ' 从输入数组 arr 的下限到上限进行循环 For i = LBound(arr) To UBound(arr) ' 如果 arr 中的当前元素大于指定的最小值 If arr(i) > minVal Then ' 如果最大值未提供或者当前元素小于最大值 If IsMissing(maxVal) Or arr(i) < maxVal Then ' 重新调整 newArr 数组的大小以增加一个元素,并保留原有元素 ReDim Preserve newArr(UBound(newArr) + 1) ' 此处将元素添加到倒数第二个位置,不符合常规逻辑,通常应添加到最后一个位置,即 newArr(UBound(newArr)) newArr(UBound(newArr) - 1) = arr(i) End If End If Next i ' 重新调整 newArr 数组的大小,去除最后一个空元素 ReDim Preserve newArr(UBound(newArr) - 1) ' 返回筛选后的数组 FilterArray = newArr End Function