我的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个。