google-sheets - 计算 googlesheets 中的 VIP 等级
问题描述
我必须解决一个问题,即根据用户每月的表现为用户分配正确的 VIP 级别。如果达到分数,则将用户移动到特定级别。我用这个filter
功能很容易做到这一点。现在,要保持上个月的状态,用户必须至少达到一定的积分。如果他不这样做,他将被降级到以前的级别。
例子:
VIP等级如下:
+---------+----------+------------+------------+-------------------+
| level # | Level | Min Points | Max Points | Keep level Points |
+---------+----------+------------+------------+-------------------+
| 1 | BRONZE | 0 | 1875 | 0 |
+---------+----------+------------+------------+-------------------+
| 2 | SILVER | 1875 | 9375 | 1875 |
+---------+----------+------------+------------+-------------------+
| 3 | GOLD | 9375 | 37500 | 9375 |
+---------+----------+------------+------------+-------------------+
| 4 | PLATINUM | 37500 | 93750 | 37500 |
+---------+----------+------------+------------+-------------------+
| 5 | DIAMOND | 93750 | 187500 | 93750 |
+---------+----------+------------+------------+-------------------+
| 6 | ASTEROID | 187500 | 562500 | 187500 |
+---------+----------+------------+------------+-------------------+
例如,如果用户在一个月内产生 40000 点积分,他将被提升为 PLATINUM。这也意味着下个月,如果他没有达到上级(钻石或小行星),他需要至少产生 37500 点才能保持他的水平,否则他将被降级为 GOLD。
以一个特定的用户为例,我可以构建一个模型来找到每个月的正确级别,但使用几行来迭代这些月。(谷歌表在这里)
可以用这个结果来概括:
+-------+---------+---------+---------+---------+---------+---------+
| Month | 07-2019 | 08-2019 | 09-2019 | 10-2019 | 11-2019 | 12-2019 |
+-------+---------+---------+---------+---------+---------+---------+
| UserX | 1765 | 15408 | 1383 | 1499 | 9379 | 4161 |
+-------+---------+---------+---------+---------+---------+---------+
| Level | BRONZE | GOLD | SILVER | BRONZE | GOLD | SILVER |
+-------+---------+---------+---------+---------+---------+---------+
现在,有数百名用户,我想找到公式来计算每个月的正确级别,而无需使用多行(每个用户仅 1 行)
任何人都可以帮助找出解决方案吗?
解决方案
粘贴到您需要的位置并向右拖动:
=ARRAYFORMULA(IF($A4:$A9="",,IFNA(VLOOKUP(B4:B9,
{0, "BRONZE";
1875, "SILVER";
9375, "GOLD";
37500, "PLATINUM";
93750, "DIAMOND";
187500, "ASTEROID"}, 2, 1))))
电子表格演示
更新:
在 B13 和 C13 中使用上述公式降低 1 级,粘贴此公式并向右拖动:
=ARRAYFORMULA(IFNA(VLOOKUP(IF(IF($A4:$A9="",,IFNA(VLOOKUP(C4:C9,
{0, 1; 1875, 2; 9375, 3; 37500, 4; 93750, 5; 187500, 6}, 2, 1)))+1< IF($A4:$A9="",,IFNA(VLOOKUP(B4:B9,
{0, 1; 1875, 2; 9375, 3; 37500, 4; 93750, 5; 187500, 6}, 2, 1))), IF($A4:$A9="",,IFNA(VLOOKUP(B4:B9,
{0, 1; 1875, 2; 9375, 3; 37500, 4; 93750, 5; 187500, 6}, 2, 1)))-1, IF($A4:$A9="",,IFNA(VLOOKUP(C4:C9,
{0, 1; 1875, 2; 9375, 3; 37500, 4; 93750, 5; 187500, 6}, 2, 1)))),
{1, "BRONZE";
2, "SILVER";
3, "GOLD";
4, "PLATINUM";
5, "DIAMOND";
6, "ASTEROID"}, 2, 0)))
电子表格演示
推荐阅读
- javascript - 一个短路的 Promise.allSerial(),没有异步等待
- javascript - 我在反应状态有问题。它继续筑巢
- python - ValueError:标签输入类型(字符串和数字)的混合
- batch-file - 批处理文件缺少操作数错误,但输出正确
- yaml - 识别 YAML 中相同类型的实体(结构与内容)
- python - 如何在django中的外键关系的另一端嵌入过滤器
- sql - 如何使用 SQL 获取 CosmosDB 中每个项目的最新记录
- singleton - NextJS:初始化一个对象一次
- javascript - php优惠券系统
- flutter - 如何在 Wrap 小部件中添加最大宽度行?