VBA宏,用于根据一种条件进行行和列的转置

时间:2019-02-28 13:02:00

标签: excel vba excel-formula

我正在尝试管理公司的时间表,并且有一个小问题。我的数据按人均行排列,但是我希望它们采用列格式。当前,数据采用以下格式: Current organization of working times

我希望它具有以下形状:

要遵循的规则:使用相同的名称(人)和相同的日期,获取“ OUT”时间值并将其放在下一行。请注意,有几千行。

Desired Outcome

非常欢迎提出问题 提前非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以改为使用Excel公式。

示例: -添加一列,其中包含日期和“ IN” /“ OUT”状态 -添加一列,该列使用第一步中的列作为查询来查找当前行日期的超时时间 -过滤,以便保留“ IN” /“ OUT”列,但删除“ OUT” /“ OUT”列 -如有必要,可在宏中自动执行上述操作。使用宏记录器可能是最简单的方法。然后,如果您愿意,可以手动整理VBA代码

答案 1 :(得分:0)

一种可能的解决方案是:

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