如何将列的总和达到某个值?

时间:2017-12-04 17:10:03

标签: google-sheets

我有一张google工作表,我正在尝试计算练级和经验值。 A列具有级别, B列具有达到下一级别所需的exp。即要达到3级,你需要600 exp。

A B
1个200
2个400
3个600
...
99 19800

在第I2列中,我有一个exp的数量的整数(例如2000),在J2栏中我想弄清楚如果他们从0开始会有什么级别。

2 个答案:

答案 0 :(得分:0)

使用辅助列(例如Z):将=sum(B$1:B1)放入单元格Z1并向下拖动。这将计算每个级别所需的总和。在J2中,使用公式

=vlookup(I2, {B:B, Z:Z}, 2) + 1

在B列中查找I2,并返回小于或等于搜索键的最近匹配。它添加1来查找将达到的级别,因为您的表具有这种偏移量:N级的条目是关于达到级别N + 1。

您可能希望将0 0置于表格顶部,以便正确处理200以下的金额。或者使用单独的if条件对其进行处理。

使用代数

在您的特定情况下,级别N所需的点数可以计算为

200*(1+2+3+...+N-1) = 200*(N-1)*N/2 = 100*(N-1/2)^2 - 25

因此,给定x个点数,我们可以直接用代数找到N:

N = floor(sqrt((x+25)/100)+1/2)

表示公式

=floor(sqrt((I2 + 25) / 100) + 1/2)

将在单元格J2中具有所需的效果,而无需额外的列和vlookup

但是,第二种方法仅适用于此特定点值。

答案 1 :(得分:0)

将其放在J列中,并根据需要向下ddrag。向下舍入(I2,-2)将I2向下舍入到最接近的100.索引匹配在列B中找到匹配并返回匹配行的列A中的值。

=index(A2:A100,match(ROUNDDOWN(I2,-2),B2:B100,0))