В моем листе 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, чтобы пройти через все строки, пока я не закончу. В основном до нуля.
Правки 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 из них.