![根据值将多行转换为单列](https://linux22.com/image/1323561/%E6%A0%B9%E6%8D%AE%E5%80%BC%E5%B0%86%E5%A4%9A%E8%A1%8C%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8D%95%E5%88%97.png)
我有一张 Excel 表
A 1 2 3 4
B 1 2
C 1 2 3 4 5
我需要将输出视为
A 1
A 2
A 3
A 4
B 1
B 2
C 1
C 2
C 3
C 4
C 5
如果有人能帮助我找到解决方案,我将不胜感激
答案1
您需要使用 VBA 代码来实现这一点。
假设您的输入表称为“输入”,输出表称为“输出”,并且输入从没有标题的单元格 A1 开始,则以下代码将起作用:
Sub MakeOutput()
Dim iInputRow As Long
Dim iInputColumn As Long
Dim iOutputRow As Long
iOutputRow = 1 '- counter for which row to paste to
'- loop through each row on the input sheet
For iInputRow = 1 To Sheets("Input").Range("A" & Sheets("Input").Rows.Count).End(xlUp).Row
'- loop through each column inside of each row
For iInputColumn = 2 To Sheets("Input").Cells(iInputRow, 1).End(xlToRight).Column
Sheets("Output").Range("A" & iOutputRow).Value = Sheets("Input").Range("A" & iInputRow).Value
Sheets("Output").Range("B" & iOutputRow).Value = Sheets("Input").Cells(iInputRow, iInputColumn).Value
iOutputRow = iOutputRow + 1
Next iInputColumn
Next iInputRow
End Sub
其作用是,如果输入数据从 A1 开始一直到 A 中有数据的最后一个单元格,则循环遍历每一行。
然后在每一行中,它循环遍历每个填充的列。
对于输入表中的每一列数据,它都会将该对的值复制到输出表中。