目前我有两个报告,它们的格式不同,希望使用宏或公式将其中一个报告转换为与另一个报告相同的格式,以便将两个报告合并在一起。
由于这两个报告提供了不同的指标,但基于相同的名称和日期(作为细分)。我想知道除了手动转动每个日期范围表并手动转换所有内容之外,是否还有其他方法可以做到这一点。
下面是示例,我想转换第一个报告,其中包含按行排列的指标(食物A,B和C),而日期(16-Sep-2016
和25-Sep-2016
)排列在列中其他方式如下表所示。
示例图片:
希望很快能听到任何人的意见!
谢谢:)
答案 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