我挠头完成我的这个 VBA 脚本并陷入困境:
在sheet1中,我有一个大表(非结构化),范围为A1:BY1200,第1行包含已过滤的标题。现在我只需要将过滤后的范围存储到数组中并将数组数据写回不同的工作簿。以下是我实现上述目标的半完整代码:
我的困惑:
我已经阅读了一些类似场景的帖子,但没有一个完全满足我的案例的所有要求。有人在其他帖子中建议在循环过滤范围以记录到数组中时使用 Areas 方法。
提前非常感谢。
注意:过滤后,过滤范围内有不相邻的行
Sub StoreFilteredRangeInArray()
Dim rCell as Range, rData as Range, rArea as Range
Dim i as Long
with Activesheetset
set rData = .range("A1").CurrentRegion
Dim rFiltered as Range
rData.autofilter Field:=1, Criteria1:="<>"
with rData
set rFiltered = .offset(1,0).Resize(.Rows.count -1, .Column.count).SpecialCells(xlCellTypeVisible)
end with
Dim myArray() as variant
...(get stuck here)
end with
End Sub
搜索,可能还有人工智能,都是你的朋友:
Public Function RangeToArray(rng As Range) As Variant
Dim i As Long, r As Range
ReDim arr(1 To rng.Count)
i = 1
For Each r In rng
arr(i) = r.Value
i = i + 1
Next r
RangeToArray = arr
End Function
第二个:
Public Sub CopyArray(rnArray() As Variant)'<= Populated Array
'output the array to a different range of cells
Sheets("Sheet2").Range("A1:BY1200").Copy = rnArray()
End Sub