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

如何编写公式拆分结构化数据生成ASIN-日期-时段-排名汇总表?

解决方案(Google Sheets)

针对你提到的宽表转长表需求,这里提供基于ARRAYFORMULA、FLATTEN和SPLIT的可行公式,直接生成目标四列数据:

基础版公式(适用于所有单元格均为“早排名,晚排名”格式)

=ARRAYFORMULA(
  LET(
    asins, A2:A,          // 提取所有ASIN数据(跳过表头)
    dates, B1:Z1,         // 提取所有日期表头
    ranks, B2:Z,          // 提取所有排名数据区域
    // 展开ASIN和日期,仅保留有排名的行
    expanded_asins, FLATTEN(IF(ranks<>"", asins, "")),
    expanded_dates, FLATTEN(IF(ranks<>"", dates, "")),
    // 拆分排名并展开
    split_ranks, SPLIT(FLATTEN(ranks), ","),
    // 生成对应早/晚时间标签并展开
    times, FLATTEN(IF(ranks<>"", "Morning"&"|"&"Evening", "")),
    expanded_times, SPLIT(FLATTEN(times), "|"),
    // 过滤空排名行,输出最终四列
    FILTER(
      {expanded_asins, expanded_dates, expanded_times, split_ranks},
      split_ranks<>""
    )
  )
)

增强版公式(兼容仅含单排名的单元格)

如果存在单元格只有早排名或只有晚排名(无逗号分隔),可以用以下公式自动补全格式,避免时间标签错位:

=ARRAYFORMULA(
  LET(
    asins, A2:A,
    dates, B1:Z1,
    ranks, B2:Z,
    // 为无逗号的单元格自动补全逗号,确保拆分后有两个元素
    fixed_ranks, IF(ranks<>"", IF(NOT(REGEXMATCH(ranks, ",")), ranks&",", ranks), ""),
    expanded_asins, FLATTEN(IF(fixed_ranks<>"", asins, "")),
    expanded_dates, FLATTEN(IF(fixed_ranks<>"", dates, "")),
    split_ranks, SPLIT(FLATTEN(fixed_ranks), ","),
    times, FLATTEN(IF(fixed_ranks<>"", "Morning"&"|"&"Evening", "")),
    expanded_times, SPLIT(FLATTEN(times), "|"),
    FILTER(
      {expanded_asins, expanded_dates, expanded_times, split_ranks},
      split_ranks<>""
    )
  )
)

使用说明

  1. 调整公式中的区域范围(A2:A、B1:Z1、B2:Z)匹配你的实际数据;
  2. 公式会自动跳过空的排名单元格,仅保留有效数据行;
  3. 输出结果的四列依次为:ASIN、Date、Time(MorningOrEvening)、Rank。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:41:31