如何在Google Sheet中实现多列值转对应多行格式?
Google Sheets 表格逆透视解决方案
你需要的是**逆透视(Unpivot)**操作,把多列的“值”转换成对应名称的多行数据,用以下函数组合就能实现:
假设原数据位于A1:D4(A1是“名称”表头,B1-D1是“值1-值3”,A2-D4是数据行),在空白单元格(比如F1)输入以下公式:
={{"名称", "值"}; ARRAYFORMULA(QUERY(SPLIT(FLATTEN(A2:A4&"|"&B2:D4), "|"), "where Col2 is not null", 0))}
公式拆解:
A2:A4&"|"&B2:D4:将每行的名称与对应列的值用竖线拼接,生成包含所有名称-值组合的二维数组(包括空值组合)FLATTEN:把二维数组转为一维,所有组合排成一列SPLIT(..., "|"):将每个拼接后的字符串按竖线拆分,分成“名称”和“值”两列QUERY(..., "where Col2 is not null", 0):过滤掉值为空的行,0表示不包含QUERY自带的表头{{"名称", "值"}; ...}:手动添加结果的表头,和处理后的数据合并成完整表格
如果不需要自动生成表头,也可以单独输入表头后,在F2单元格用简化版公式:
=ARRAYFORMULA(QUERY(SPLIT(FLATTEN(A2:A4&"|"&B2:D4), "|"), "where Col2 is not null", 0))
单独用Transpose无法满足需求,因为它只负责转置行列,没法将同一名称的多值拆分为多行,而上面的方法正是专门解决这类逆透视场景的。
内容的提问来源于stack exchange,提问作者Rupesh SA
相关产品推荐
相关产品推荐

