Перемещение данных в определенные столбцы и строки - PullRequest
0 голосов
/ 29 мая 2019

В моем листе 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 из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...