Спасибо всем за ваши комментарии! Вы помогли мне понять проблему намного лучше.
Просто чтобы уточнить, почему я делаю это и чего я действительно хотел: я портирую Clang на какую-то конкретную платформу. Таким образом, моя цель здесь состояла в том, чтобы понять, содержит ли этот тест (из нашей системы тестирования автогенов) ошибку, или, скорее, это ошибка компиляции clang. По результатам этого обсуждения я отправил ошибку llvm ( https://bugs.llvm.org/show_bug.cgi?id=41178 ).
Еще раз спасибо!
Можно использовать функцию сводной таблицы Excel для инвертирования сводной таблицы (который является по существу, что Вы имеете здесь):
Хорошие инструкции здесь:
http://spreadsheetpage.com/index.php/tip/creating_a_database_table_from_a_summary_table/
Который связывается со следующим кодом VBA (поместите его в модуль), если Вы не хотите следовать инструкциям вручную:
Sub ReversePivotTable()
' Before running this, make sure you have a summary table with column headers.
' The output table will have three columns.
Dim SummaryTable As Range, OutputRange As Range
Dim OutRow As Long
Dim r As Long, c As Long
On Error Resume Next
Set SummaryTable = ActiveCell.CurrentRegion
If SummaryTable.Count = 1 Or SummaryTable.Rows.Count < 3 Then
MsgBox "Select a cell within the summary table.", vbCritical
Exit Sub
End If
SummaryTable.Select
Set OutputRange = Application.InputBox(prompt:="Select a cell for the 3-column output", Type:=8)
' Convert the range
OutRow = 2
Application.ScreenUpdating = False
OutputRange.Range("A1:C3") = Array("Column1", "Column2", "Column3")
For r = 2 To SummaryTable.Rows.Count
For c = 2 To SummaryTable.Columns.Count
OutputRange.Cells(OutRow, 1) = SummaryTable.Cells(r, 1)
OutputRange.Cells(OutRow, 2) = SummaryTable.Cells(1, c)
OutputRange.Cells(OutRow, 3) = SummaryTable.Cells(r, c)
OutputRange.Cells(OutRow, 3).NumberFormat = SummaryTable.Cells(r, c).NumberFormat
OutRow = OutRow + 1
Next c
Next r
End Sub
- Adam
Ответ @Adam Davis идеален, но на всякий случай, если вы так же невежественны, как и я, в отношении Excel VBA, вот что я сделал, чтобы код работал в Excel 2007:
Готово! Первый столбец будет строками, второй столбец будет столбцами, третий столбец будет данными.
лента как крайний правый элемент управления. Щелкните его, и вы увидите подробный список макросов, просто дважды щелкните тот, который называется «ReversePivotTable», чтобы запустить его.Готово! Первый столбец будет строками, второй столбец будет столбцами, третий столбец будет данными.
лента как крайний правый элемент управления. Щелкните его, и вы увидите подробный список макросов, просто дважды щелкните тот, который называется «ReversePivotTable», чтобы запустить его.Готово! Первый столбец будет строками, второй столбец будет столбцами, третий столбец будет данными.