Макрос VBA для транспонирования строк и столбцов на основе одного условия - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь управлять расписанием своей компании и у меня небольшая проблема.У меня есть данные, упорядоченные в строках на человека, однако я хотел бы иметь их в формате столбца.В настоящее время данные представлены в следующем формате: Current organization of working times

Я бы хотел, чтобы они имели следующую форму:

Правила, которые должны соблюдаться: под тем же именем(человек) и той же даты, возьмите значение времени «OUT» и поместите его в следующую строку.Обратите внимание, что есть несколько тысяч строк.

Desired Outcome

Вопросы приветствуются Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Одно из возможных решений:

Option Explicit

Sub Insert()

    Dim LastRow As Long, i As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastRow = .Cells(.Rows.Count, "D").End(xlUp).Row

        For i = LastRow To 2 Step -1

            If .Range("A" & i).Value = "" And .Range("D" & i).Value = "OUT" Then
                .Range("D" & i - 1).Value = .Range("C" & i).Value
                .Rows(i).EntireRow.Delete
            End If

        Next i

    End With

End Sub
0 голосов
/ 28 февраля 2019

Вместо этого вы можете сделать это с формулами Excel.

Пример: - Добавить столбец, объединяющий дату и статус «ВХОД» / «ВЫХОД» - добавить столбец, который ищет время выхода для текущей строки.date, используя столбец с первого шага в качестве поискового фильтра, так что вы сохраняете столбцы «IN» / «OUT», но удаляете столбцы «OUT» / «OUT» - при необходимости автоматизируйте вышеперечисленное в макросе.Использование макро-рекордера, вероятно, самый простой способ.Тогда, если хотите, вы можете вручную убрать код VBA

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