首页 > 解决方案 > 如何在Excel VBA中的同一位置组合来自2个数组的条目

问题描述

我有 2 个动态范围(一个包含字段名称,一个包含位置编号)。为简单起见,这里是一个示例,实际范围包含更多条目。

Field     Position
SN        20
AT        8

我可以一次循环遍历其中一个范围,但不能同时循环。

使用以下代码,输出为:

SN
20
8
AT
20
8
Sub testarray2()
    HeadArray = [Drng_EUSUploadFields].Value
    ColArray = [Drng_EUSUploadPositions].Value

    For Each element In HeadArray
        MsgBox element

        For Each element2 In ColArray
            MsgBox element2
        Next
    Next
End Sub

我正在寻找的是:

SN
20
AT
8

在示例代码中,我使用了msgbox,但计划在准备工作表时将每个条目用作变量。我会SN & 20先我们,然后使用AT & 8,等等......

我希望这是有道理的,而不是漫无边际的。提前感谢您提供的任何帮助。

标签: excelvba

解决方案


ColArray您正在为 的每个元素输出整个HeadArray

为了更容易查看正在发生的事情,请将您的代码更新为此(从查看菜单显示即时窗口)即时窗口可以轻松查看整个输出

Sub testarray2()
    HeadArray = [Drng_EUSUploadFields].Value
    ColArray = [Drng_EUSUploadPositions].Value

    For Each element In HeadArray
        Debug.Print "Outer", element

        For Each element2 In ColArray
            Debug.Print "Inner", element2
        Next
    Next
End Sub

输出将是

Outer         SN
Inner          20 
Inner          8 
Outer         AT
Inner          20 
Inner          8

得到你想要的输出

Sub testarray3()
    HeadArray = [Drng_EUSUploadFields].Value
    ColArray = [Drng_EUSUploadPositions].Value

    For i = 1 To UBound(HeadArray, 1)
        Debug.Print HeadArray(i, 1)
        Debug.Print ColArray(i, 1)
    Next
End Sub

旁注:您应该使用Option Explicit并声明所有变量


推荐阅读