之前教了大家如何用 PQ 将一列表格以每三行合并一个单元格的规则,转换成一个新的表。如果有 Microsoft 365 版本的同学,也可以使用高阶函数来实现。
今天就教公式解法。
案例:
将下图 1 中的姓名按以下要求转换:
每三行姓名合并到一个单元格中;
姓名之间以“、”隔开
效果如下图 2 所示。
解决方案:
1. 在 C2 单元格中输入以下公式 --> 下拉复制公式:
=TEXTJOIN("、",1,OFFSET($A$1:$A$19,ROW(A1)*3-2,0,3))
公式释义:
OFFSET($A$1:$A$19,ROW(A1)*3-2,0,3):
offset 函数的作用是返回指定的行列区域;
语法为 OFFSET(要引用的区域, 偏移的行数, 偏移的列数, [返回的高度], [返回的宽度]);
本公式表示在 $A$1:$A$19 偏移 ROW(A1)*3-2 行;第一行的公式中,row(a1)=1,公式结果是 1;第二行公式时,row(a2)=2,公式结果为 2*3-2=4,即偏移到第 4 行;随着公式下拉,实现了每一次偏移 +3 行;
第二个参数 0 表示列不需要偏移;
第三个参数 3 表示总共引用 3 行;
TEXTJOIN("、",1,...):用 TEXTJOIN 将上述公式的结果联接起来,中间用“、”分隔,第二个参数 1 表示忽略空白单元格
* 请注意:公式中的区域 $A$1:$A$19 要绝对引用。