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

谷歌表格:当另一列值变化时用序列信息更新指定列的方案

谷歌表格解决方案:按分组填充序列值

针对你的需求,这里提供两种无需VLOOKUP(避免大数据量性能问题)和ISODD(适配分组列含文本的场景)的谷歌表格公式方案:

方案一:按分组出现顺序循环预设动物列表

如果你的需求是按分组首次出现的顺序,循环使用预设的动物序列(比如dog→cat→dog→cat...),可以用以下数组公式:

=LET(
  groups, B:B,
  animals, A:A,
  unique_groups, UNIQUE(FILTER(groups, groups<>"")),
  group_order, XMATCH(groups, unique_groups),
  animal_cycle, {"dog", "cat"},
  IF(animals<>"", animals, INDEX(animal_cycle, MOD(group_order-1, COUNTA(animal_cycle))+1))
)

公式说明:

  1. UNIQUE(FILTER(groups, groups<>"")):提取所有非空分组,保留首次出现的顺序
  2. XMATCH(groups, unique_groups):标记每行分组在唯一分组列表中的位置序号
  3. MOD(group_order-1, COUNTA(animal_cycle))+1:用取模运算实现动物序列的循环
  4. IF(animals<>"", animals, ...):保留A列已有值,仅填充空值

方案二:优先使用分组首次出现的动物值,空分组自动循环

如果需要优先使用每个分组首次出现时的A列值,仅当分组首次出现时A列为空,才按顺序循环填充,可以用:

=LET(
  groups, B:B,
  animals, A:A,
  unique_groups, UNIQUE(FILTER(groups, groups<>"")),
  first_animal, MAP(unique_groups, LAMBDA(g, INDEX(FILTER(animals, groups=g), 1))),
  filled_list, IF(first_animal<>"", first_animal, INDEX({"dog", "cat"}, MOD(XMATCH(unique_groups, unique_groups)-1, 2)+1)),
  XLOOKUP(groups, unique_groups, filled_list, "")
)

公式说明:

  1. MAP(unique_groups, LAMBDA(g, INDEX(FILTER(animals, groups=g), 1))):获取每个分组首次出现时的A列值
  2. IF(first_animal<>"", first_animal, ...):如果分组首次有动物值就用它,否则自动循环dog/cat
  3. XLOOKUP:将处理后的分组对应值匹配到所有行,确保同一分组的填充值统一

使用提示:

  • 以上公式均为数组公式,输入到A列第一个空单元格后,会自动填充所有符合条件的行
  • 如果你的动物序列不止dog/cat,只需修改公式中的{"dog", "cat"}为你需要的序列即可
  • 若分组列包含文本,两个方案都能正常适配,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:35:02