【问题标题】:VBA Append arrays into another a third oneVBA 将数组追加到另一个第三个
【发布时间】:2017-06-25 04:06:10
【问题描述】:

如何附加两个具有相同维度的动态数组,然后按这些值的升序对其进行排序?

例如,

Dim a as Variant
a = sheets(1).range("B" & firstRow & ":B" & lastRow)
Dim b as Variant
b = sheets(1).range("C" & firstRow & ":C" & lastRow)

firstRow 和 lastRow 已正确定义。

我的问题是如何在数组 a 之后附加数组 b。让我们假设 a = (8,3,5) 和 b = (1,7,2)。数组 c 必须是 (8,3,5,1,7,2)。我尝试了以下但没有成功。谁能解释为什么它不起作用?

Dim c as variant
c = Join(b, Join(a, ","))

要对数组c中引入的值进行排序,我必须创建一个函数还是只能在一个操作中完成?

谢谢

最新版本

我已经改成如下代码:

Dim aArray() As variant
aArray = aRange
Dim bArray() As Variant
bArray = bRange
Dim cArray() As Variant
cArray = aArray
Dim i As Integer

For i = 1 To UBound(coutArray)
 ReDim Preserve cArray(UBound(aArray)+1) As Variant
 cArray(i + UBound(aArray),1) = bArray(i,1)
Next i

我试图将 cArray() 附加到 aArray 的末尾,这两个数组将在 cArray() 中引入。为什么这不起作用?我想了解。

我也尝试创建一个函数 (How do I Merge two Arrays in VBA?),但是我将如何调用一个过程?效果不太好。

谢谢!

【问题讨论】:

    标签: arrays vba dynamic append concatenation


    【解决方案1】:

    您要追加数组还是 Excel 范围?

    a 和 b 在您的示例中仅是 Excel Range 对象。不是数组。

    无论如何:这是一篇关于加入数组的好文章:How do I Merge two Arrays in VBA?

    这里有一篇用于排序的文章: VBA array sort function?

    【讨论】:

    • 其实a和b有excel范围的值。我想我必须先将范围转换为数组,然后再查找数组的值。
    • 我真的不明白你想要做什么。 Join 将单维数组的所有元素注释为字符串。例如a = (8,6,9) Join(a, "/") 返回字符串 "8/6/9"
    • 我想从两个不同的列创建两个数组。然后,我需要将这两个数组聚合成第三个数组。例如,考虑 a = Array(8,3,5) 和 b = Array(1,72) 第三个数组 c = Array(1,2,3,5,7,8) 其中值按升序排序.
    • 好的,我添加了一些指向答案的链接。
    猜你喜欢
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多