首页 > 解决方案 > 将数据移动到特定的列和行

问题描述

我的 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) 中的四月。然后我会复制并粘贴此代码十二次以获得所有月份。v 和 k 变化 1 以遍历所有行,直到 i 用完。基本上直到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 个。

标签: excelvba

解决方案


推荐阅读