excel - 将范围转换为数组
问题描述
我有以下工作表:
我想将 C15 到最后一行/列的范围转换为数组。
我尝试了以下代码但无法正常工作:
Sub rangeToArray()
Dim arr() As Variant
arr = Range("C15", Range("C15").End(xlDown).End(xlToRight))
End Sub
有人可以帮我吗?我想获得从 C15 到最后一行/列的范围,并根据不同的标准对其进行排序并将行复制到具有相同格式的不同电子表格中。我想将范围转换为数组,因为我有超过 30k 行并且工作速度更快。
谢谢!
解决方案
arr = Range("C15", Range("C15").End(xlDown).End(xlToRight))
只是另一种说法arr = Range("C15").CurrentRegion
最重要的是,这当前指的是ActiveSheet
,因此您可能想尝试以下操作:
Sub rangeToArray()
Dim arr() As Variant
With Sheet1 'Change to whichever CodeName your sheet has
arr = .Range("C15").CurrentRegion
End With
End Sub
注意:正如我在评论中所说,CurrentRegion
一旦您的数据开始出现空白,它将无法正常工作。因此,您可能需要重新编写代码以检查 column 中最后使用的行和 row 中C:C
最后使用的列15
:
Sub rangeToArray()
Dim arr() As Variant
Dim lr As Long, lc As Long
With Sheet1 'Change to whichever CodeName your sheet has
lr = .Cells(.Rows.Count, 3).End(xlUp).Row
lc = .Cells(15, .Columns.Count).End(xlToLeft).Column
arr = .Range(.Cells(15, 3), .Cells(lr, lc))
End With
End Sub
推荐阅读
- java - 带有 '\\?' 的正则表达式 符号在我的代码中不起作用
- sql - 雪花结宁三桌
- docker - Dockerfile:未找到 Python3
- perl - 如何检查对象是否重载 XS 中的运算符?
- angular - 在 Angular 中嵌套组件时,我可以在应用程序选择器函数中指定额外的参数吗?
- java - Java:Swing:Nimbus:JComboBox editable box looks different from not editable box
- sql - Count Distinct 小于 Sum(Count Distinct)
- javascript - State set with useState not passing down through props
- unit-testing - Method (with optional parameter) mocked with mockito return null on unit test. Dart Flutter
- powershell - 如何在PowerShell中查询唯一的Outlook会议ID