将数据移动到特定的列和行

时间:2019-05-29 04:47:01

标签: excel vba

我的Excel工作表中有两列数据:

    Month: 4, 4, 4, 4, 4, 5, 6, 6, 6, etc.
    Day: 2, 2, 2, 3, 4, 6, 1, 2, 3, etc.

我想做的是在其他栏中设置月份。然后将该月份与每一行中的月份匹配。我想在VBA中为此编写一个子例程,以便可以使用任何数据集(月和日)进行迭代。因此,我的范围将类似于A1:A ....因此,从上面的示例中可以看出:

    January February March April May June July August ....
                             2    6    1
                             2         2
                             2         3
                             3
                             4

我一直在处理一些If语句,但是我得到了太多的变量,并认为我使它变得更复杂了。

编辑:

    j = 10
    k = 2
    m = 11
    v = 2
    u = 13
    LastRow_0 = .Cells(.Rows.Count, "J").End(xlUp).Row
    For i = 2 To LastRow_0
    If Cells(i, j) = 4 Then
        Cells(v, u) = Cells(k, m)
            Else: Cells(v, u) = ""
                k = k + 1
                v = v + 1

    End If
    Next i

这就是我所拥有的。它不喜欢“ .Rows.Count”语法。月是j,天是m。 u是#u(13)栏中的4月。然后,我将复制并粘贴此代码十二次以获取所有月份。 v和k改变1以遍历所有行,直到我用完为止。基本上直到Null。

编辑2:

    'January
    With ThisWorkbook.Sheets("Form Date")
        LR1 = .Cells(.Rows.Count, "J").End(xlUp).Row
    For i = 2 To LR1
        If Cells(i, 10) = 1 Then
            Cells(i, 13) = Cells(i, 11)
                Else: Cells(i, 13) = ""

        End If
    Next i
    End With
    '--------------------------------------------------------
    'Febuary
    With ThisWorkbook.Sheets("Form Date")
        LR2 = .Cells(.Rows.Count, "J").End(xlUp).Row
    For i = 2 To LR2
        If Cells(i, 10) = 2 Then
            Cells(i, 14) = Cells(i, 11)
                Else: Cells(i, 14) = ""

        End If
    Next i
    End With
    '---------------------------------------------------------
    'March
    With ThisWorkbook.Sheets("Form Date")
        LR3 = .Cells(.Rows.Count, "J").End(xlUp).Row
    For i = 2 To LR3
        If Cells(i, 10) = 3 Then
            Cells(i, 15) = Cells(i, 11)
                Else: Cells(i, 15) = ""

        End If
    Next i
    End With

我给了它更多的想法,并进行了一些更改以排除一些变量。最终不需要它们。我想要一个比这里小的代码,因此运行时间更少,不需要12个。

0 个答案:

没有答案