行到列中的度量标准(以及从列到行的日期)

时间:2016-09-29 10:44:51

标签: excel excel-vba excel-formula excel-2010 excel-2007 vba

目前我有两个报告,它们的格式不同,希望使用宏或公式将其中一个报告转换为与另一个报告相同的格式,以便将两个报告合并在一起。

由于这两个报告提供了不同的指标,但基于相同的名称日期(作为细分)。我想知道除了手动转动每个日期范围表并手动转换所有内容之外,是否还有其他方法可以做到这一点。

下面是示例,我想转换第一个报告,其中包含按行排列的指标(食物A,B和C),而日期(16-Sep-201625-Sep-2016)排列在列中其他方式如下表所示。

示例图片:

enter image description here

希望很快能听到任何人的意见!

谢谢:)

1 个答案:

答案 0 :(得分:1)

它远非最佳,只是一个快速的解决方案,但它完成了这项工作。它将图片中的上部表格转换为另一个表格。您的原始表必须在第一张表上,并且在运行宏之前需要一个空的第二张表:

Sub TableChanger()

    Dim i As Integer, j As Integer, k As Integer
    Dim n As Integer

    Sheets(2).Cells.ClearContents
    Sheets(2).Cells(1, 1).Value = "Date"
    Sheets(2).Cells(1, 2).Value = "Name"

    i = 2
    n = 2
    While Sheets(1).Cells(i, 1).Value <> ""

        j = 3
        While Sheets(1).Cells(i, 1).Value <> Sheets(2).Cells(1, j).Value And Sheets(2).Cells(1, j).Value <> ""
            j = j + 1
        Wend
        If Sheets(2).Cells(1, j).Value = "" Then
            Sheets(2).Cells(1, j).Value = Sheets(1).Cells(i, 1).Value
        End If

        i = i + 1
    Wend

    i = 3
    While Sheets(1).Cells(1, i).Value <> ""
        j = 2
        While Sheets(1).Cells(j, 1).Value <> ""

            k = 3
            While Sheets(2).Cells(1, k).Value <> Sheets(1).Cells(j, 1).Value
                k = k + 1
            Wend

            n = 2
            While (Sheets(1).Cells(1, i).Value <> Sheets(2).Cells(n, 1).Value Or Sheets(1).Cells(j, 2).Value <> Sheets(2).Cells(n, 2).Value) And Sheets(2).Cells(n, 1) <> ""
                n = n + 1
            Wend

            Sheets(2).Cells(j, 1).Value = Sheets(1).Cells(1, k).Value
            If Sheets(2).Cells(j, 1).Value <> "" Then Sheets(2).Cells(j, 2).Value = Sheets(1).Cells(j, 2).Value
            Sheets(2).Cells(n, k).Value = Sheets(1).Cells(j, i).Value

            j = j + 1
        Wend
        i = i + 1
    Wend
End Sub