vba - 将多个范围复制到数组中而不循环

标签 vba excel

我想将数据从分隔的范围复制到数组中而不循环。

以下方法仅使用 rng1 中的数据填充数组。

Dim rng1 As Range, rng2 As Range, rng3 As Range, rngMerge As Range
Dim tmpMatrixCPs_CDS() As Variant

Set WS_Ins_Mapping = ThisWorkbook.Worksheets("Instrumente_Mapping")
LastRow = WS_Ins_Mapping.Cells(rows.Count, 2).End(xlUp).Row
Set rng1 = WS_Ins_Mapping.Range(WS_Ins_Mapping.Cells(6, 2), WS_Ins_Mapping.Cells(LastRow, 2))
Set rng2 = WS_Ins_Mapping.Range(WS_Ins_Mapping.Cells(6, 26), WS_Ins_Mapping.Cells(LastRow, 26))
Set rng3 = WS_Ins_Mapping.Range(WS_Ins_Mapping.Cells(6, 36), WS_Ins_Mapping.Cells(LastRow, 36))
Set rngMerge = Union(rng1, rng2, rng3)
tmpMatrixCPs_CDS = WS_Ins_Mapping.Range(rngMerge).Value

最佳答案

将所有列放入一个数组中,然后过滤掉您的列:

Sub Try()
Dim tmpMatrixCPs_CDS() As Variant, x As Variant
Set WS_Ins_Mapping = ThisWorkbook.Worksheets("Instrumente_Mapping")
lastrow = WS_Ins_Mapping.Cells(Rows.Count, 2).End(xlUp).Row

x = WS_Ins_Mapping.Range(WS_Ins_Mapping.Cells(6, 1), WS_Ins_Mapping.Cells(lastrow, 36))
tmpMatrixCPs_CDS = Application.Index(x, Application.Evaluate("row(1:" & lastrow - 5 & ")"), Array(2, 26, 36))
End Sub

关于vba - 将多个范围复制到数组中而不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51026754/

相关文章:

vba - 尝试访问共享点时出现路径未找到错误

vba - 以当前日期关闭宏

c# - 使用c#从excel文件中删除行

vba - 我可以使用 IsEmpty 来引用不同的工作表并隐藏列吗?

.net - 如何在 Excel VBA 中使用 .NET 对象?

vba - 如何在 Excel VBA Internet Explorer 中使用通配符

excel - 如何在excel中找到隐藏的字符

vba - 使用 VBA 和 Oauth2 交换 Google Calendar API 的访问 token 的授权代码

sql - Excel 2003 如何将两张表送入数据透视表?

c# - 使用 ADO.NET (OleDb) 创建 Excel 工作表 --> 支持哪些数据类型?