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

Google Sheets高尔夫动态计分公式问题:并列第一得分异常

问题分析

你需要在Google Sheets中实现高尔夫球手积分自动计算:

  • 未提交成绩(空值)得0分
  • 已提交的15名球手按杆数排名,最差成绩对应第15名积分(20分)
  • 并列时,将对应名次的积分总和平分给并列者(如并列第一平分500+440=940,每人得470)

但现有公式计算并列第一时返回440分,不符合预期。

错误原因

原公式的核心逻辑缺陷:
公式将并列处理逻辑放在了COUNTIF($B$2:$B$17, "<="&B2) >15的分支中,但并列第一时,COUNTIF(<=当前杆数)的结果是2(2人杆数相同且最低),远小于15,因此直接进入SWITCH分支返回第2名的440分,完全没有触发并列积分的计算逻辑。

修正后的公式

使用LET函数简化逻辑,确保所有并列情况都能被正确处理:

=IF(ISBLANK(B2), 0,
  LET(
    // 定义1-16名对应的积分数组
    rank_scores, {500,440,390,340,300,260,220,190,160,130,100,80,60,40,20,0},
    // 计算杆数小于当前值的人数
    less_count, COUNTIF($B$2:$B$17, "<"&B2),
    // 计算杆数等于当前值的人数(并列人数)
    equal_count, COUNTIF($B$2:$B$17, B2),
    // 确定当前并列组的起始名次和结束名次
    start_rank, less_count + 1,
    end_rank, less_count + equal_count,
    // 确保结束名次不超过15(已提交球手最多15人,最差对应第15名积分)
    adjusted_end, MIN(end_rank, 15),
    // 计算并列组对应的积分总和
    total_points, SUM(INDEX(rank_scores, start_rank):INDEX(rank_scores, adjusted_end)),
    // 平分积分给并列者
    total_points / equal_count
  )
)
验证步骤
  1. 在B2:B17中输入两名球手的杆数为88(最低分),其余14人留空或输入更高杆数
  2. 应用公式后,两名并列第一的球手将得到(500+440)/2=470分
  3. 未提交成绩的球手将自动得到0分
  4. 若15人提交成绩,最差的球手将得到第15名的20分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:44:51