如何在Google Sheets中将多列数据转为带类型列的三元组行
最简实现方法(Google Sheets 转三元组行数据)
这事儿其实用Google Sheets自带功能或者简单数组公式就能轻松搞定,给你两个最简方案,按需选择:
方案一:用原生逆透视(Unpivot)功能(手动操作,无公式)
这是最直观的一次性转换方法:
- 选中整个原始数据区域(包括表头
Entity A B C和下面的两行数据) - 点击顶部菜单栏的「数据」→「数据透视表和图表」→「逆透视列」
- 在弹出的设置窗口里:
- 把「Entity」添加到保留列(这列作为每个三元组的第一个值,保持不动)
- 把「A」「B」「C」都添加到逆透视列(这些列会被拆分成Type和Value字段)
- 点击「确定」,直接就能生成你要的三元组格式!默认表头是「Entity」「属性」「值」,双击表头就能改成「Type」和「Value」。
方案二:用数组公式(动态更新,数据变动自动同步)
如果需要原始数据更新后结果自动同步,就用这个公式。找个空白单元格(比如E1)输入:
=QUERY(FLATTEN(ARRAYFORMULA(A2:A3&"|"&B1:C1&"|"&B2:C3)),"SELECT SPLIT(Col1,'|') WHERE Col1 IS NOT NULL LABEL SPLIT(Col1,'|') 'Entity','Type','Value'")
公式简单解释:
ARRAYFORMULA(A2:A3&"|"&B1:C1&"|"&B2:C3):把每一组「Entity+列名+数值」用竖线|拼接成字符串,生成二维数组FLATTEN:把二维数组转成一维列表,让每一组拼接后的字符串单独占一行QUERY:拆分竖线分隔的内容、过滤空值,最后给拆分后的三列设置自定义表头
如果你的数据行数/列数会变动,把公式里的固定范围改成动态范围即可,比如把A2:A3改成A2:A,B1:C1改成B1:1,B2:C3改成B2:2,这样新增行或列都会自动纳入转换。
内容的提问来源于stack exchange,提问作者quikchange
相关产品推荐
相关产品推荐

