将具有重复项的列转置为唯一列

ved*_*dar 0 excel excel-formula

我想知道是否可以使用分组的重复字段转置列,例如:

+---------+------+
| field_1 | 1    |
| field_2 | 2    |
| field_3 | 3    |
| field_4 | 4    |
| field_1 | 5    |
| field_2 | 6    |
| field_3 | 7    |
| field_4 | 8    |
| field_1 | 9    |
| field_2 | 10   |
| field_3 | 11   |
| field_4 | 12   |
+---------+------+
Run Code Online (Sandbox Code Playgroud)

到唯一的列,像这样:

+---------+---------+---------+---------+
| field_1 | field_2 | field_3 | field_4 |
+---------+---------+---------+---------+
| 1       | 2       | 3       | 4       |
| 5       | 6       | 7       | 8       |
| 9       | 10      | 11      | 12      |
+---------+---------+---------+---------+
Run Code Online (Sandbox Code Playgroud)

这可能没有脚本吗?

Tim*_*ams 5

在E3中输入以下公式(使用Ctrl + Shift + Enter),然后填充,然后填写.

=OFFSET($C$1,LARGE((ROW($B$2:$B$13)-1)*($B$2:$B$13=E$2),ROW()-2),0) & ""
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

值不在列出的顺序中,但至少在正确的列中.

将尝试解释:

  • 我们想要的每个不同"字段"值的所有值都被C1的一些"x"行偏移
  • 以"field_1"为例(ROW($B$2:$B$13)-1)*($B$2:$B$13=E$2)将返回一个行数乘以1(TRUE)或零(FALSE),具体取决于"B"单元格值是否匹配"field_1"(来自E2).这-1是一个调整,因为我们从第2行开始.返回的数组看起来像:

    [1,0,0,0,5,0,0,0,9,0,0,0]

  • 给定该数组,我们需要找到一些方法来逐个获得非零值:我们可以使用LARGE()来做到这一点,使用ROW()-2(-2)将第二个参数递增到LARGE,因为我们希望第二个参数开始在1处,公式正在第3行中输入.这给了我们一个有序的值数组:

    [9,5,1,0,0,0,0,0,0,0,0,0]

  • 我们将这个有序数组作为OFFSET()的"行偏移"参数传递,从C2倒数:所有非零值给出了我们想要的Col C值,而所有零值只返回C2(它是空的,并且会显示为0没有最后一个& ""

  • 公式中的所有单元格引用都在需要的地方使用$,因此在拖动时根据需要进行调整以填充/跨越