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

Google Sheet序列号生成问题:按月份计数+同日期字母后缀

Google Sheet 序列号生成方案(按月份统计+同日期后缀)

修正后的公式

=ARRAYFORMULA(
  IF(
    OR(F2:F="", E2:E=""),
    "",
    LEFT(F2:F, 2) & "-" &
    TEXT(E2:E, "YYYY-MM") & "-" &
    TEXT(
      BYROW(
        E2:E,
        LAMBDA(d,
          IF(
            d="",
            "",
            COUNT(UNIQUE(FILTER(E$2:d, TEXT(E$2:d, "YYYY-MM")=TEXT(d, "YYYY-MM"))))
          )
        )
      ),
      "000"
    ) &
    IF(
      COUNTIFS(E2:E, E2:E, ROW(E2:E), "<="&ROW(E2:E)) > 1,
      CHAR(64 + COUNTIFS(E2:E, E2:E, ROW(E2:E), "<="&ROW(E2:E)) - 1),
      ""
    )
  )
)

公式说明

核心解决点

  1. 按月份统计日期序号:不再以完整日期为计数维度,改为统计当前日期在对应年月内的唯一出现顺序(比如当月第一个新日期为001,第二个为002)。
  2. 同日期行添加字母后缀:同一日期的多行,序列号数字部分保持一致,后续行自动追加A、B、C...后缀区分。

各部分拆解

  • 空值判断:OR(F2:F="", E2:E=""),若F列前缀或E列日期为空,返回空值,避免生成无效内容。
  • 前缀生成:LEFT(F2:F, 2)提取F列前两位字符作为序列号前缀。
  • 年月格式化:TEXT(E2:E, "YYYY-MM")将日期转为年-月格式(如2024-03),替代原公式手动拼接的方式,避免10-12月出现010这类错误格式。
  • 月份内日期序号计算:
    • BYROW+LAMBDA逐行处理日期,筛选当前行及以上同年月的所有日期,去重后统计数量,得到该日期在当月的唯一序号。
    • TEXT(..., "000")将序号转为三位数字格式(如1→001,15→015)。
  • 同日期后缀处理:
    • COUNTIFS统计当前行及以上同日期的行数,若行数大于1,通过CHAR(64 + 行数-1)生成A、B、C...后缀(ASCII码中64对应@,加1即为A,以此类推);第一行无后缀。

效果示例

假设F列为AB,E列日期如下:

E列日期生成的序列号
2024/3/20AB-2024-03-001
2024/3/20AB-2024-03-001A
2024/3/21AB-2024-03-002
2024/3/21AB-2024-03-002A
2024/3/21AB-2024-03-002B
2024/3/25AB-2024-03-003

内容的提问来源于stack exchange,提问作者Ferdinand palaspas II

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:28:09