我现在使用以下代码填充我的阵列证券:
Option Base 1
Securities = Array(Worksheets(3).Range("A8:A" & SymbolCount).Value)
Run Code Online (Sandbox Code Playgroud)
这产生了一个二维数组,其中每个地址都是(1 ... 1,1 ... N).我想要一维数组(1 ... N).
我怎样才能(a)将证券作为一维数组填充,或者(b)有效地将证券剥离为一维数组(我在每个循环中陷入困境).
Jon*_*n49 58
我知道你已经接受了答案,但这里有更简单的代码:
如果你抓住一个单行(有多列),那么使用:
Securities = application.transpose(application.transpose _
(Worksheets(3).Range("A8:A" & SymbolCount).Value))
Run Code Online (Sandbox Code Playgroud)
如果要抓取单个列(包含多行),请使用:
Securities = application.transpose(Worksheets(3).Range("A8:A" & SymbolCount).Value)
Run Code Online (Sandbox Code Playgroud)
所以,基本上你只需要对行进行两次转换,对列进行一次转置.
更新:
大型表可能不适用于此解决方案(如下面的注释中所述):
我在一个大表中使用了这个解决方案,我发现这个技巧有一个限制:
Application.Transpose(Range("D6:D65541").Value)'运行没有错误,但Application.Transpose(Range("D6:D65542").Value)'运行时错误13类型不匹配
Sub test2()
Dim arTmp
Dim securities()
Dim counter As Long, i As Long
arTmp = Range("a1").CurrentRegion
counter = UBound(arTmp, 1)
ReDim securities(1 To counter)
For i = 1 To counter
securities(i) = arTmp(i, 1)
Next i
MsgBox "done"
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63577 次 |
| 最近记录: |