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

标签 excel vba

编辑:通过打印数组,我的意思是将数组放在工作表中的一个范围内:)
我在带有 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/

相关文章:

csv - VBA将数据从未打开的CSV文件复制到工作表而不打开关闭的CSV

Excel VBA - 删除重复项方法不适用于 Mac

vba - #ERROR : Unable to get match property of the worksheet class. 我已经尝试过在线提供的解决方案

Excel VBA Msxml2.XMLHTTP.6.0 与 Msxml2.ServerXMLHTTP.6.0

vba - 复选框 - 未找到方法或数据成员

vba - inputBox Excel VBA 整数问题

excel - 如何将所有这些代码放在一起以作为一个模块运行?

excel - 如何让我的各个模块协同工作?

python - 用python解析excel文档

excel - 通过VBS更改Excel创建日期