You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对含合并单元格的表格进行逆透视(Unpivot)处理?

解决合并单元格日程表扁平化的空值问题

修正后的公式

=ArrayFormula(
  QUERY(
    SPLIT(
      FLATTEN(
        IFERROR(VLOOKUP(ROW(MAIN!$D$4:$D$51),FILTER({ROW(MAIN!$D$4:$D$51),MAIN!$D$4:$D$51},MAIN!$D$4:$D$51<>""),2,FALSE))&"|&"&
        IFERROR(VLOOKUP(ROW(MAIN!$E$4:$E$51),FILTER({ROW(MAIN!$E$4:$E$51),MAIN!$E$4:$E$51},MAIN!$E$4:$E$51<>""),2,FALSE))&"|&"&
        MAIN!$F$3:$M$3&"| "&
        IF(MAIN!$F$4:$M$51=1,"Работает",MAIN!$F$4:$M$51)
      ),"|",,
    ),"select * where Col4 <> '' ",0
  )
)

公式说明

  • 填充合并单元格空白值:通过VLOOKUP+FILTER组合自动补全D、E列合并单元格的空白行,确保每一行都有对应的部门和姓名值,从根源避免合并单元格空值导致的拆分后空单元格。
  • 过滤空日程内容:用QUERY函数筛选掉日程内容为空的行,彻底清除扁平化后的空行。
  • 保留原有逻辑:维持了原公式中数值转文本(1转Работает)、FLATTEN转置、SPLIT拆分的核心逻辑。

简化替代方案(仅D列为合并单元格时适用)

如果只有部门列(D列)存在合并单元格,可使用SCAN函数更简洁地填充空白:

=ArrayFormula(
  QUERY(
    SPLIT(
      FLATTEN(
        SCAN("",MAIN!$D$4:$D$51,LAMBDA(a,c,IF(c="",a,c)))&"|&"&
        MAIN!$E$4:$E$51&"|&"&
        MAIN!$F$3:$M$3&"| "&
        IF(MAIN!$F$4:$M$51=1,"Работает",MAIN!$F$4:$M$51)
      ),"|",,
    ),"select * where Col4 <> '' ",0
  )
)

内容的提问来源于stack exchange,提问作者SoursXond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:43:21