解答网友提问:将文本数据表的某一列转置成三行,变成一个二维表。
案例:将下图 1 的数据表转换成二维表,以“月份”列为列字段,“零食”列为值字段,如果行列字段有重复,则将多个值字段放在同一个单元格中。
效果如下图 2 所示。


1. 在 E2 单元格中输入以下公式 --> 回车:
=PIVOTBY(A1:A46,B1:B46,C1:C46,ARRAYTOTEXT,1,0,,0)


公式释义:
pivotby 是用于透视数据的函数,功能等同于数据透视表;
语法为 PIVOTBY (row_fields,col_fields,values,function,[field_headers],[row_total_depth],[row_sort_order],[col_total_depth],[col_sort_order],[filter_array],[relative_to]);
row_fields:行字段;
col_fields:列字段;
values:值字段;
function:要执行的聚合计算;
[field_headers]:指定 row_fields、col_fields 和 值是否具有标头,以及是否应在结果中返回字段标头;
[row_total_depth]:确定行标题是否应包含总计;
[row_sort_order]:如何对列进行排序;
[col_total_depth]:确定列标题是否应包含总计;
[col_sort_order]:如何对行进行排序;
[filter_array]:一个面向列的 1D 布尔值数组,指示是否应考虑相应的数据行;
[relative_to]:当有两个聚合函数时,relative_to 控制向聚合函数的第二个参数提供哪些值。
这里的公式表示分别将 A1:A46、B1:B46 和 C1:C46 作为行字段、列字段、值字段;将值区域转换成文本,即不聚合;不需要包含标题,不需要行、列总计。
最后几行中,行、列区域均有重复,公式自动将值字段的文本合并在了同一个单元格中,以“,”分隔。
