Excel - 如何将行中的表头转换为列?

Excel - 如何将行中的表头转换为列?

我有一张这种格式的表格:

姓名 约翰
年龄 19
颜色 绿色的
姓名
年龄 22
颜色 蓝色的
姓名 麦克风
年龄 三十
颜色 红色的

我想将其转换为以下格式:

姓名 年龄 颜色
约翰 19 绿色的
22 蓝色的
麦克风 三十 红色的

这就像“多重”转置,但我没有找到办法做到这一点。

答案1

一种方法,可能不是最好的,因为它使用了多个公式:

=TRANSPOSE(UNIQUE($A$1:$A$9))将返回您的标题。将返回公式
=FILTER($B$1:$B$9,$A$1:$A$9=D$1)中第一个值(名称)所在的单元格的值。拖动其他两列。D1Tranpose

在此处输入图片描述

答案2

使用 Office 365(动态数组公式),我们可以使用一个公式:

=LET(
    fclm,A1:A9,
    sclm,B1:B9,
    lbl,UNIQUE(fclm),
    MAKEARRAY(
        MAX(BYROW(lbl,LAMBDA(z,COUNTA(FILTER(fclm,fclm=z)))))+1,
        ROWS(lbl),
        LAMBDA(y,x,IF(y=1,INDEX(lbl,x),INDEX(FILTER(sclm,fclm=INDEX(lbl,x)),y-1)))))

MAKERRAY 遍历指定的行和列。我们使用 INDEX 从各种 FILTER 和 UNIQUE 中获取正确的值。

在此处输入图片描述

现在假设每个组都有每个标签,组内的顺序无关紧要。但是,组必须在一起。

相关内容