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

查找数据数组首个满足条件元素 玩家每日对应等级计算方案咨询

解决方案

推荐方案:ARRAYFORMULA + VLOOKUP 组合(无需QUERY,效率最高)

你的需求属于典型的升序区间匹配场景,VLOOKUP的近似匹配原生支持「查找小于等于目标值的最大值并返回对应列」的逻辑,完全契合你的实现思路,搭配ARRAYFORMULA可以实现一次编写自动批量计算所有天数的等级。

前置假设(可根据实际表格范围调整参数)

  • 等级积分表范围:等级表!A2:B5,A列存储等级,B列存储升级所需积分,默认已按积分升序排列
  • 每日积分表范围:日报表!A2:B,A列存储天数,B列存储当日累计积分,需在C列输出对应等级

具体公式

在日报表的C2单元格输入以下公式即可自动溢出所有天数的等级结果:

=ARRAYFORMULA(IF(B2:B="",,VLOOKUP(B2:B, {等级表!B2:B, 等级表!A2:A}, 2, TRUE)))

公式说明

  • {等级表!B2:B, 等级表!A2:A}:构造临时查询数组,把积分列放在第一列(满足VLOOKUP从左到右查找的规则),等级列放在第二列,无需调整原等级表的列顺序
  • VLOOKUP(..., 2, TRUE):最后一个参数设为TRUE开启近似匹配,自动找到小于等于当日积分的最大升级积分对应的等级
  • 外层套IF(B2:B="",,)是为了过滤空行,避免B列还没填数据的时候返回错误值
  • 最外层的ARRAYFORMULA让公式支持数组批量运算,不用手动下拉填充

可选方案:QUERY + ARRAYFORMULA 组合

如果你更习惯用QUERY的语法,也可以用二者组合实现,公式如下:

=ARRAYFORMULA(IF(B2:B="",,BYROW(B2:B, LAMBDA(p, QUERY(等级表!A:B, "SELECT A WHERE B <= "&p&" ORDER BY B DESC LIMIT 1", 0)))))

该方案逻辑更直观,但逐行调用QUERY的性能低于VLOOKUP方案,仅推荐数据量较小的场景使用。

结果验证

两个方案返回的结果完全符合你的预期:

DayLevel
11
21
32
43

内容的提问来源于stack exchange,提问作者Eduardo Z.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:51:02