Excel VBA阵列结果偏移

时间:2018-05-12 19:02:40

标签: excel excel-vba vba

我根据输入到工作表的结果开发了一个数组。使用命令按钮,我可以将必要的数据填充到延迟表中。我面临的问题是我无法将数组结果扩展到延迟表上我想要的方式。在延迟表上,在10和10之间存在一列偏移。 11和4列之间的偏移在13和13之间。 14。

    arval = "" 'This will be the total strig value of the individual array values that are captured
    a = 0 'counts the total number of rows of data that exist in the array

    For i = 2 To lr  'Start the array
        aval = wsg.Range("A" & i).Value

        If aval = "Y" Then  'Set the search parameters
            arval = wsg.Range("B" & i).Value & "~#pop#~"  'Start collecting data with the B column

                For j = 3 To 14
                    arval = arval & wsg.Cells(i, j).Value & "~#pop#~"   'continue collecting information in the various columns
                Next j
            ReDim Preserve array1(a)
            array1(a) = arval
            a = a + 1
        End If

    Next i

    wsd.Range("G2:X15").ClearContents  'Clears the inserts range

If a > 0 Then
    cr = 2
    For i = LBound(array1) To UBound(array1)
        cc = 7
        newarr = Split(array1(i), "~#pop#~")
        For j = LBound(newarr) To UBound(newarr)
            wsd.Cells(cr, cc).Value = newarr(j)
            cc = cc + 1
        Next j
        cr = cr + 1
    Next i
End If

我一直在考虑使用偏移功能,但无法弄清楚如何在代码中有效地使用它。我还想过使用一个额外的数组,比如使用“b”变量,然后将cc设置为11并继续显示信息。我各种各样的困惑。 我想跳过10到11之间的一列。这就是目标。如果我能得到一个,我可以得到其余的。

1 个答案:

答案 0 :(得分:0)

添加一些条件数学,前提是假为零,而真为零。

    For j = LBound(newarr) To UBound(newarr)
        wsd.Cells(cr, cc).Value = newarr(j)
        cc = cc + 1 + (abs(cc=10)) + (abs(cc=13)*4)
    Next j