如何用公式在Google Sheets中将宽表转长表?含排序与空值忽略
在Google Sheets中将宽格式转长格式并分组排序的公式方法
核心公式
假设你的原始数据结构如下:
- A列是分组名称(如团队、类别)
- B列到D列是宽格式的名字/值列(包含空白单元格)
- 数据从第2行开始(第1行为标题行)
在空白单元格(比如F2)输入以下公式,即可直接生成符合要求的长格式表格:
=SORT(FILTER( { FLATTEN(IF(B2:D<>"", A2:A, "")), FLATTEN(B2:D) }, FLATTEN(B2:D)<>"" ), 1, TRUE, 2, TRUE)
公式说明
FLATTEN(IF(B2:D<>"", A2:A, "")):为每个非空白值绑定对应分组,空白值则留空,再将结果转成纵向列FLATTEN(B2:D):把宽格式的多列值全部转成纵向单列FILTER(..., FLATTEN(B2:D)<>""):自动过滤掉所有空白值的行SORT(..., 1, TRUE, 2, TRUE):先按**分组列(第1列)升序排序,再按值列(第2列)**字母升序排序,实现分组内的有序排列
适配调整
如果你的值列不止B-D列(比如延伸到Z列),只需把公式中的B2:D替换为实际的列范围(如B2:Z)即可。
内容的提问来源于stack exchange,提问作者asd
相关产品推荐
相关产品推荐

