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 ) )
验证步骤
- 在B2:B17中输入两名球手的杆数为88(最低分),其余14人留空或输入更高杆数
- 应用公式后,两名并列第一的球手将得到
(500+440)/2=470分 - 未提交成绩的球手将自动得到0分
- 若15人提交成绩,最差的球手将得到第15名的20分
内容的提问来源于stack exchange,提问作者Kurt Hamilton
相关产品推荐
相关产品推荐

