gpt4 book ai didi

excel - 将 2nd 维度从 2D 变体写入 Range,无需在 VBA 中循环

转载 作者:行者123 更新时间:2023-12-02 14:39:49 25 4
gpt4 key购买 nike

我有一个变量变量,并将以下范围值传递给它,如下所示。

Option Base 1
Dim varEmployees As Variant

varEmployees = Range("A1:B5").Value

此 2D 变体现在在第一维中具有员工 ID,在第二维中具有员工姓名。所以我们得到类似下面的内容。

varEmployees(1,1) = 1234    varEmployees(1,2) = John Doe
varEmployees(2,1) = 5678 varEmployees(2,2) = Jane Smith
varEmployees(3,1) = 9012 varEmployees(3,2) = Mary Major
varEmployees(4,1) = 3456 varEmployees(4,2) = Judy Stiles
varEmployees(5,1) = 7890 varEmployees(5,2) = Richard Miles

我只想将第二个维度写回到一个范围而不使用循环,但是当我使用以下代码时......

Range("D1:D5") = varEmployees

我只得到实际结果下显示的第一个维度,但我想要的是我的期望结果(仅第二个维度)。

Actual Results       Desired Results
-------------- ---------------
1234 John Doe
5678 Jane Smith
9012 Mary Major
3456 Judy Stiles
7890 Richard Miles

有没有办法做到这一点,或者是否有我不知道的关于变体数组的规则。

最佳答案

使用 someRange.Value 获取的变体数组始终从 1 开始,因此您实际上并不需要 Option Base 1

这是一个可以完成您想要的操作的方法:

Sub Test()

Dim a As Variant, b As Variant
a = Range("A1:B5").Value

'get a specific column
b = Application.Index(a, 0, 2) '0="all rows"
With Range("D10")
.Resize(UBound(b), 1).Value = b
End With

'get a specific row
b = Application.Index(a, 2, 0) '0="all cols"
With Range("D21")
.Resize(1, UBound(b)).Value = b
End With
End Sub

关于excel - 将 2nd 维度从 2D 变体写入 Range,无需在 VBA 中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18906631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com