如何从新循环到下一行打印数组和值

时间:2017-07-28 05:37:19

标签: arrays excel-vba loops vba excel

这是我正在使用的代码的一部分,我有一个问题。我有数组的值(masyvas),我开始新的循环,通过使用masyvas(i,1)值找到其他值,然后我需要新的值将打印在masyvas(i,2),我需要将它们分组。它需要看起来像这样:

991988 Gaz.duon.sk“Giros”gaiv.g.1,5L5_PETØFLAT1,5

        PALINK

117388 Silp.gaz.nat.min.v“Tiche'1,5L5_PETØFLAT1,5

       PALINK
       RIMI LIETUVA
       ŠIAULIŲ TARA 

111388 Gaz.nat.min.v“Tiche”1,5Lpet5_PETØFLAT1,5

       PALINK
       AIBĖS LOGISTIKA
       AIBĖS LOGISTIKA
       RIMI LIETUVA
       ŠIAULIŲ TARA 

How it looks now from marked 1 it goes wrong

Data sheet where i get array values

以下是我的代码的一部分,我有这个问题现在它在masyvas(i,2)旁边打印新值但不在我需要的下面。

lastrow2 = Sheets("lapas").Cells(Rows.Count, 1).End(xlUp).Row

rub = lastrow2
cub = 3

ReDim masyvas(1 To rub, 1 To cub)
For i = 1 To rub
   For j = 1 To cub
      masyvas(i, j) = Sheets("lapas").Cells(i, j).Value 'array gets values from filtered data in AKCIJOS sheet
   Next
Next

Sheets("lapas").Range("A1:C100").Clear



For i = 1 To rub Step 1
Set rng2 = grafikas.Cells(6 + h, 2)

    prekeskodas = masyvas(i, 1)


        For m = 2 To lastrow
            If akcijos.Cells(m, 8) >= laikas And akcijos.Cells(m, 8) <= laikas2 Then
                If prekeskodas = akcijos.Cells(m, 4) Then

                grafikas.Cells(7 + r, 2).EntireRow.Select
                Selection.Insert Shift:=xlDown
                grafikas.Cells(7 + r, 3) = akcijos.Cells(m, 3)

                r = r + 1
                h = r
                End If

            End If
         Next m

    For j = 1 To cub Step 1

      rng2.Offset(i - 1, j - 1).Value = masyvas(i, j)

    Next


Next

1 个答案:

答案 0 :(得分:1)

您没有提供任何数据截图,因此很难说出您的问题和所需输出到底是什么,但请尝试下面的代码。我标记了更改的行。

For i = 1 To rub
prekeskodas = masyvas(i, 1)

For m = 2 To lastrow
    If akcijos.Cells(m, 8) >= laikas And akcijos.Cells(m, 8) <= laikas2 Then
        If prekeskodas = akcijos.Cells(m, 4) Then

           'masyvas(i, 2) = masyvas(i, 2) & akcijos.Cells(m, 3)
           masyvas(i, m) = masyvas(i, m) & akcijos.Cells(m, 3) '<------

        End If
    End If
Next

For j = 1 To cub

    rng2.Offset(j - 1, i - 1).Value = masyvas(i, j) '<-----

Next
Next