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

求助:开发客户订阅跟踪表格的续费叠加公式问题

问题分析与解决方案

核心问题拆解

  • 无法识别续费行为的时间节点(到期前/后),导致续费时长无法正确叠加或重新计算

实现方案(基于Google Sheets)

1. 日志表结构优化

确保日志表包含以下必填列:

  • 姓名:唯一标识用户
  • 订阅日期:格式为日期型(YYYY-MM-DD)
  • 套餐类型:固定选项(周订阅/月订阅)

2. 计算用户当前到期日期的公式

在数据库表中,针对每个用户,用以下公式计算最终到期日期:

=LET(
  userLogs, FILTER(日志表!A:C, 日志表!A:A=A2),
  sortedLogs, SORT(userLogs, 2, TRUE),
  dates, INDEX(sortedLogs,,2),
  plans, INDEX(sortedLogs,,3),
  durations, ARRAYFORMULA(IF(plans="周订阅",7,31)),
  currentDate, TODAY(),
  finalEndDate, REDUCE(0, SEQUENCE(ROWS(dates)), LAMBDA(acc, i,
    LET(
      purchaseDate, INDEX(dates,i),
      duration, INDEX(durations,i),
      IF(acc=0, purchaseDate+duration-1, IF(purchaseDate<=acc, acc+duration, purchaseDate+duration-1))
    )
  )),
  IF(finalEndDate>=currentDate, finalEndDate, "已过期")
)

公式说明:

  • LET:简化变量定义,提升可读性
  • FILTER+SORT:提取并按时间排序当前用户的所有订阅记录
  • REDUCE:迭代计算每一笔订阅的到期日期:
    • 首次订阅:直接计算订阅日期+时长-1(确保包含当天)
    • 续费在当前有效期内:当前到期日期+续费时长
    • 续费在过期后:新订阅日期+时长-1

3. 订阅状态计算

在数据库表的订阅状态列,使用公式:

=IF(B2="已过期", "未订阅", "订阅中")

(假设B2是到期日期列)

4. 注意事项

  • 日志表中同一用户的订阅记录必须准确无误,避免日期格式错误
  • TODAY()会自动更新,确保状态实时同步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:47:36