如果您正在寻找一些在 Excel 中将多行转换为列的最简单方法,那么您会发现本文很有帮助。
在我们将用来演示方法的示例数据集中,我们有一些产品从一月到五月的销售记录。让我们将行转换为列,以便我们可以将月份可视化为列标题。
我们在这里使用了Microsoft Excel 365版本,但您可以根据自己的方便使用任何其他版本。
方法 1 – 使用转置选项
我们可以使用粘贴选项中的转置选项来轻松地将以下多行转换为列。
步骤:
按 CTRL+C 复制数据集的整个范围。
选择要输出的单元格,右键单击鼠标,然后从粘贴选项中选择转置选项。
数据被转置,这意味着行被转换为列。
方法 2 – 使用 TRANSPOSE 函数
我们可以使用数组函数(TRANSPOSE 函数)将多行转换为多列。为了收集数据,我们还在主数据集下方设置了另一个表格的格式。
步骤:
在单元格 B10 中输入以下公式:
=TRANSPOSE(B3:E8)
在这里,TRANSPOSE将同时将B3:E8范围内的行更改为列。
按ENTER。 *
执行行到列的转换,如下图所示。
* 对于除 Microsoft Excel 365 之外的其他版本,请按 CTRL+SHIFT+ENTER 而不是 ENTER 。
方法 3 – 使用 INDIRECT 和 ADDRESS 函数
我们可以使用INDIRECT、ADDRESS、ROW和COLUMN函数将行转换为列。
步骤:
在单元格 B10 中使用以下公式:
=INDIRECT(ADDRESS(COLUMN(B3) - COLUMN($B$3) + ROW($B$3), ROW(B3) - ROW($B$3) + COLUMN($B$3)))
这里,B3是主数据集的起始单元格。
COLUMN(B3) → 返回单元格的列号B3输出 → 2
COLUMN($B$3) → returns the column number of cell $B$3
ROW($B$3) → returns the row number of cell $B$3
ROW(B3) →
COLUMN(B3) - COLUMN($B$3) + ROW($B$3)
ROW(B3) - ROW($B$3) + COLUMN($B$3)
ADDRESS(COLUMN(B3) - COLUMN($B$3) + ROW($B$3), ROW(B3) - ROW($B$3) + COLUMN($B$3))
ADDRESS(3, 2) →
INDIRECT(ADDRESS(COLUMN(B3) - COLUMN($B$3) + ROW($B$3), ROW(B3) - ROW($B$3) + COLUMN($B$3)))
按ENTER。
将填充手柄工具拖动到右侧和向下。
该公式会将主数据集的多行更改为多列。
方法 4 – 使用 INDEX 函数
我们还可以使用INDEX、COLUMN和ROW函数的组合。
步骤:
在单元格 B10 中应用以下公式。
=INDEX($B$3:$E$8,COLUMN(A1),ROW(A1))
这里,$B$3:$E$8是数据集的范围,A1用于获取该数据集的第一行和列号。我们使用列号作为行号参数,使用行号作为列号参数来更改行通过将这些值输入到 INDEX 函数,可以轻松地将这些值放入列中。
按ENTER。
将填充手柄工具拖动到右侧和向下。
我们将行转换为列,如下图所示。
方法 5 – 使用 INDEX-MATCH 公式
步骤:
手动将第一列转置为新表的第一行。
在单元格 B11 中输入以下公式:
=INDEX($C$3:$C$8,MATCH(B$10,$B$3:$B$8,0))
这里,$C$3:$C$8 是数据集的第二列,$B$3:$B$8 是数据集的第一列。
MATCH(B$10,$B$3:$B$8,0)
INDEX($C$3:$C$8,MATCH(B$10,$B$3:$B$8,0))
按ENTER并将填充手柄工具拖动到右侧。
我们将得到主数据集的第二列作为第二行。
同样,应用以下公式完成其余的转换:
=INDEX($D$3:$D$8,MATCH(B$10,$B$3:$B$8,0))
=INDEX($E$3:$E$8,MATCH(B$10,$B$3:$B$8,0))
我们将第一个数据集的所有行作为第二个数据集的列。
方法 6 – 使用 VLOOKUP 函数
步骤:
手动将第一列转置为新数据集的第一行。
在单元格 B11 中输入以下公式:
=VLOOKUP(B$10,$B$3:$E$8,2,FALSE)
这里,$B$3:$E$8是数据集的范围,B$10是查找值,2是查看数据集第二列中的值。
按ENTER并将填充手柄工具拖动到右侧。
我们将主数据集的第二列作为第二行。
以同样的方式,使用下面给出的公式来完成其余的转换:
=VLOOKUP(B$10,$B$3:$E$8,3, FALSE)
=VLOOKUP(B$10,$B$3:$E$8,4, FALSE)
方法 7 – 使用 Power Query
要使用Power Query轻松将多行转置为列,我们必须在数据集的开头添加额外的行,因为Power Query 不会将第一行转换为一列,因为它认为它是标题。
步骤:
转到数据选项卡>>获取和转换数据组>>来自表/范围选项。
将出现创建表向导。
选择数据范围。
单击我的表格有标题选项。
按确定。
将出现 Power Query 编辑器窗口。
同时按 CTRL 和左键单击鼠标,选择数据集的所有列。
转到变换选项卡>>转置选项。
我们也可以将数据集的第一行作为标题。
转到转换选项卡>>使用第一行作为标题组>>使用第一行作为标题选项。
我们从主数据集的行中获取转换后的列。
要关闭此窗口,请转至主页选项卡>>关闭并加载组>>关闭并加载选项。
Power Query 编辑器窗口中的表将加载到名为 Table5 的新工作表中。
方法 8 – 使用 VBA 代码
我们可以使用 VBA 代码将多行转换为列。
步骤:
转到开发人员选项卡>> Visual Basic 选项。
Visual Basic 编辑器将打开。
转到插入选项卡>>模块选项。
将创建一个模块。
输入以下代码:
Sub conversionofmultiplerows()
Dim multiple_rows_range, multiple_columns_range As Range
Set multiple_rows_range = Application.InputBox( _
Prompt:="Choose the range of rows", Title:="Microsoft Excel", Type:=8)
Set multiple_columns_range = Application.InputBox( _
Prompt:="Choose the destination cell", Title:="Microsoft Excel", _
Type:=8)
multiple_rows_range.Copy
multiple_columns_range.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
End Sub
在这里,我们将 multiple_rows_range 和 multiple_columns_range 声明为 Range,并将它们设置为我们将通过Input 选择的范围使用 InputBox 方法来输入框。然后,我们将复制主数据集multiple_rows_range并将其转置粘贴到目标单元格multiple_columns_range中。
按F5。
将会弹出一个输入框。
在选择行范围框中选择数据集的范围$B$3:$E$8,然后按确定。
将弹出另一个输入框。
选择您想要保存转置数据集的目标单元格$B$10,然后按确定。
我们得到转换后的列,甚至包括主数据集的格式。
方法 9 – 使用 OFFSET 函数
假设我们有一个列表,其中包含一些学生的姓名、他们的科目以及多行中的相应分数。现在,我们想要将前三行转换为该列表旁边的表的三个不同列。同样,我们希望将其余行转换为每三行的列。所以,我们需要同时将行转换为列和行。为此,我们将使用 OFFSET、 ROW 和 COLUMN 函数。
步骤:
在单元格 D4 中输入以下公式:
=OFFSET($B$4,COLUMN()-4+(ROW()-4)*3,0,1,1)
这里,$B$4 是列表的起始单元格。
COLUMN() → returns the column number of cell D4
Output →
COLUMN()-4
4-4 → 4
Output →
ROW() →
D4
Output →
(ROW()-4)*3
(4-4)*3 → 4
3
3
Output →
OFFSET($B$4,COLUMN()-4+(ROW()-4)*3,0,1,1)
OFFSET($B$4,0,0,1,1) → OFFSET
1
$B$4
Output
按ENTER。
将填充手柄工具拖动到右侧和向下。
发生从多行到列和行的转换。