如果您正在寻找一些在 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。

将填充手柄工具拖动到右侧和向下。

发生从多行到列和行的转换。