这是远不够理想,只是一个快速解决方案,但它的工作。它将图片中的上表转换为另一张。您的原始表必须在第一层上,并在运行宏之前,您需要一个空的第二片:
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
只是想知道如果第一个表总是有相同数量的名字,准确地每食物相同的名称(即4个A,4个B和4个C)?那么你可以用一个相当简单的公式来做到这一点。 –
您好@TomSharpe对于实际的报告,在“名称”,“日期”和“食物”有一个巨大的变体,所以我一直遇到像运行时错误溢出等问题。哈哈 –