arrays - 将二维数组转换为VBA中的列表

标签 arrays excel vba multidimensional-array

我想编写一段简单的代码来计算 bolt 组中的力。 bolt 放置在 x 列和 y 行的坐标系中。假设我有一个 3x4 系统,我得到以下几点:

(0,0) , (1,0) , (2,0) , (3,0)
(0,1) , (1,1) , (2,1) , (3,1)
(0,2) , (1,2) , (2,2) , (3,2)
(0,3) , (1,3) , (2,3) , (3,3)  
我可以使用以下代码创建它:
Dim myarray(3, 4) As String

    For x = LBound(myarray, 1) To UBound(myarray, 1)
        For y = LBound(myarray, 2) To UBound(myarray, 2)
            myarray(x, y) = x & "," & y
            Cells(x + 1, y + 1).Value = myarray(x, y)
        Next y
    Next x
现在我需要得到一个带有 x 和 y 坐标的列表来计算向量 r:
x  y  
0  0  
1  0 
2  0
3  0 
0  1
1  1
2  1
3  1
... and so on
如果尝试了不同的方法尝试拆分数组,但它总是失败:(
任何帮助将不胜感激!
问候,
  • bat 侠
  • 最佳答案

    不知道你想把它放在哪里,但你可以循环你当前的数组并通过在每个条目上使用 split 来延长 2 列

    Option Explicit
    
    Public Sub Flatten()
    
        Dim myarray(3, 4) As String, x As Long, y As Long
    
        For x = LBound(myarray, 1) To UBound(myarray, 1)
            For y = LBound(myarray, 2) To UBound(myarray, 2)
                myarray(x, y) = x & "," & y
                ActiveSheet.Cells(x + 1, y + 1).Value = myarray(x, y)
            Next y
        Next x
        
        Dim results(), r As Long, arr() As String
        ReDim results(1 To (UBound(myarray, 1) + 1) * (UBound(myarray, 2) + 1), 1 To 2)
        
        For x = LBound(myarray, 1) To UBound(myarray, 1)
            For y = LBound(myarray, 2) To UBound(myarray, 2)
                r = r + 1
                arr = Split(myarray(x, y), ",")
                results(r, 1) = arr(0)
                results(r, 2) = arr(1)
            Next y
        Next x
        
        ActiveSheet.Cells(1, 1).CurrentRegion.Offset(0, UBound(myarray, 2) + 1).Resize(UBound(results, 1), 2) = results
    
    End Sub
    

    关于arrays - 将二维数组转换为VBA中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65984542/

    相关文章:

    excel - 从 ADODB 查询返回日期(不是字符串)

    arrays - 在 scala 中,如何获取两个数组中从未显示的元素的数量?

    c - 如何正确传递这个c字符串数组

    Javascript 数组 - 指定键

    mysql - OUT 参数对某些用户不起作用

    excel - 传递 Range 参数时出现错误 424

    列表前后的 HTML 间隙 (<ul>)

    安卓 : Search from Large Arraylist

    C# 获取Excel起息日

    excel - 如果单元格中的值相同,则增加单元格中的值