如何用Google Sheets公式将多列表格扁平化为3列表格(适配任意规模)
解决Google Sheets多列表格扁平化为3列的通用公式
要实现任意大小多列表格到3列(主标识、属性名、属性值)的扁平化,你可以使用结合FLATTEN、HSTACK、SEQUENCE和FILTER的通用公式,无需手动调整范围:
=FILTER( HSTACK( FLATTEN(INDEX(A2:INDEX(A:A,COUNTA(A:A)),SEQUENCE(COLUMNS(B2:INDEX(1:1,COUNTA(1:1))-1),ROWS(A2:INDEX(A:A,COUNTA(A:A))),1))), FLATTEN(TRANSPOSE(B1:INDEX(1:1,COUNTA(1:1)))), FLATTEN(B2:INDEX(A:A,COUNTA(A:A),COUNTA(1:1))) ), FLATTEN(B2:INDEX(A:A,COUNTA(A:A),COUNTA(1:1)))<>"" )
公式说明:
A2:INDEX(A:A,COUNTA(A:A)):自动识别第一列有数据的所有行(主标识列)B1:INDEX(1:1,COUNTA(1:1)):自动获取从第二列开始的所有属性表头FLATTEN:将多维数组展开为一维,完成核心扁平化操作HSTACK:将主标识、属性名、属性值三部分横向拼接成标准3列结构FILTER:过滤掉属性值为空的行,避免无效数据输出
使用方式:
把公式粘贴到你想要输出结果的空白单元格(比如G2)即可,公式会自动识别输入表格的有效数据范围,后续添加行或列时,结果会自动适配更新。
你之前尝试的={ARRAYFORMULA(B2:B6),ARRAYFORMULA(D2:D6)}仅实现了两列数据的简单拼接,未处理多列的键值对映射逻辑,因此无法满足完整的扁平化需求。
内容的提问来源于stack exchange,提问作者Code Guy
相关产品推荐
相关产品推荐

