首页 > 解决方案 > 如何使用 VBA 或 Python 将行转换为列?

问题描述

Excel 示例

我需要转换顶部的表格,其中包含 1 个单程航班的行。我不知道从哪里开始创建一个 VBA 或 Python 脚本来转置它以获得类似于底部图形的格式,有什么想法吗?我对编码和数据操作还是很陌生,感谢您的帮助。

标签: pythonvbadatabasepivot

解决方案


感谢所有花时间阅读并回复我的问题的人,谢谢。我设法找到了一种使用 VBA 的方法,使用以下代码。在运行代码之前必须进行一些操作,例如调整标题等。

Dim i As Integer 'Import row
Dim k As Integer 'Pivot row
Dim m As Integer 'Pivot column
Dim Timestamp As Date

i = 2
k = 1

Do Until Sheet1.Cells(i, 3) = ""
If Sheet1.Cells(i, 4) <> "" Then
    If Sheet1.Cells(i, 3) <> Sheet1.Cells(i - 1, 3) Then
        k = k + 1
        Sheet2.Cells(k, 2) = Sheet1.Cells(i, 1)
        Sheet2.Cells(k, 3) = Sheet1.Cells(i, 4)
        Sheet2.Cells(k, 4) = "LGW"
        Sheet2.Cells(k, 5) = Sheet1.Cells(i, 6)
        Sheet2.Cells(k, 6) = Sheet1.Cells(i, 7)
    End If
    m = Application.WorksheetFunction.Match(Sheet1.Cells(i, 8), Sheet2.Rows(1), 0)
    If Sheet2.Cells(k, 1) = "" Then
        Sheet2.Cells(k, 1) = DateSerial(Left(Sheet1.Cells(i, 9), 4), Mid(Sheet1.Cells(i, 9), 6, 2), Mid(Sheet1.Cells(i, 9), 9, 2))
    End If
    Sheet2.Cells(k, m) = DateSerial(Left(Sheet1.Cells(i, 9), 4), Mid(Sheet1.Cells(i, 9), 6, 2), Mid(Sheet1.Cells(i, 9), 9, 2)) + (Mid(Sheet1.Cells(i, 9), 12, 2) / 24) + (Mid(Sheet1.Cells(i, 9), 15, 2) / 1440) + (Mid(Sheet1.Cells(i, 9), 18, 2) / 86400)
End If
i = i + 1
Loop

End Sub

推荐阅读