gpt4 book ai didi

excel - 您可以从 VBA 中的数组创建数组吗?

转载 作者:行者123 更新时间:2023-12-04 21:43:57 25 4
gpt4 key购买 nike

编辑:通过打印数组,我的意思是将数组放在工作表中的一个范围内:)
我在带有 VBA 的 excel 表格上使用以下代码。这将行与匹配的销售代表结合起来。下面是源表。这被加载到一个数组中。 Source table before running code
运行下面的代码后,行被合并,我将合并的行清空。我的挑战是打印某些列并且只打印非空行。为了做到这一点,我试图遍历数组并创建另一个只有非空行的数组。

Sub mergeCategoryValues2()
Dim arr2 As Variant
Dim rowcount As Long
Dim i As Variant
Dim colcount As Long

arr2 = ActiveSheet.ListObjects("APPLE").Range
rowcount = UBound(arr2, 1)
colcount = UBound(arr2, 2)
For i = rowcount To 2 Step -1


If arr2(i, 3) = arr2(i - 1, 3) Then
arr2(i - 1, 6) = arr2(i - 1, 6) + arr2(i, 6)

For k = 1 To colcount
arr2(i, k) = Null 'this loop is probably not required i can probably just use the first column

Next k
End If
Next i

End Sub
最终,我只想打印非空行和列 3、2 和 6。我认为最好的方法是创建一个非空行的数组
Array After Running Code

最佳答案

为结果创建一个与数据数组具有相同行数的数组。向下扫描数据行,并在 C 列中的每次值更改时为结果数组增加一个行计数器。使用调整大小转储结果的使用部分。
更新 - 包括标题

Sub mergeCategoryValues2()

Dim arr2 As Variant, arOut As Variant
Dim rowcount As Long, colcount As Long
Dim i As Long, k As Long, v

arr2 = ActiveSheet.ListObjects("APPLE").Range
rowcount = UBound(arr2, 1)
colcount = UBound(arr2, 2)

ReDim arOut(1 To rowcount, 1 To 3)

For i = 1 To rowcount
If arr2(i, 3) = v Then
arOut(k, 3) = arOut(k, 3) + arr2(i, 6)
Else
k = k + 1
v = arr2(i, 3) ' compare with following rows
arOut(k, 1) = arr2(i, 2)
arOut(k, 2) = arr2(i, 3)
arOut(k, 3) = arr2(i, 6)
End If
Next i

Sheet2.Range("A1").Resize(k, 3).Value2 = arOut
MsgBox "OK"
End Sub

关于excel - 您可以从 VBA 中的数组创建数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70190109/

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