将 Excel 中的多个列放在各自的行上的简单方法是什么?

将 Excel 中的多个列放在各自的行上的简单方法是什么?

我有一张如下所示的表格:

   A   |   B   |   C   |   D   |   E   |
----------------------------------------
     62| Value1| Value2|       |       |
    345| Value3| Value4| Value5| Value6|
     17| Value7|       |       |       |
    111| Value8| Value9| ValueA|       |

我想将其转换为这样:

   A   |   B   |
----------------
     62| Value1|
     62| Value2|
    345| Value3|
    345| Value4|
    345| Value5|
    345| Value6|
     17| Value7|
    111| Value8|
    111| Value9|
    111| ValueA|

这似乎是一个很常见的过程(我正在规范化一个表),Excel 会将其固定下来。有没有简单的方法可以做到这一点,还是只能编写宏或 VBA?

答案1

Excel 有一个内置的 Transpose 函数,可以切换行和列,但这不适用于您的情况。我认为唯一可行的是 VBA 函数。我的 VB 有点生疏,但这个应该可以。您需要修改“A1:E5”范围以覆盖要转换的单元格。这会将值从名为“Sheet1”的第一个工作表复制到名为“Sheet2”的第二个工作表。如果您在 Sheet2 中有数据或有不同名称的工作表,则需要修改代码。

Sub Transform()

Dim rowStr As String
Dim rowIndex As Integer

rowIndex = 1

For Each Cell In Sheet1.Range("A1:E5")
    If Cell.Column = 1 Then
        rowStr = Cell.Value
    ElseIf Not IsEmpty(Cell.Value) Then
        Sheet2.Cells(rowIndex, 1) = rowStr
        Sheet2.Cells(rowIndex, 2) = Cell.Value
        rowIndex = rowIndex + 1
    End If
Next Cell

End Sub

相关内容