每 50 年增加价值的公式

每 50 年增加价值的公式

我有一个值范围,1..1000,我想要得到总和,其中 1 到 50 的值设为 1,而 51-100 的值设为 2,101-150 的值设为 3...

因此我最终会得到:

数字 价值
1 1
2 2
3 3
.. ..
49 49
50 50
51 52
52 54
.. ..
99 148
100 150
101 153
102 156

我想出了这个公式:

=(FLOOR(A1/50, 1)*50)+(MOD(A1,50)*(FLOOR(A1/50, 1)+1))

它一直有效直到我达到 100...然后它就崩溃了......

上述公式的实际结果与期望值相比

第二列是公式产生的,但第三列是我所期望的。

答案1

请尝试一下=INT((A1+49)/50)

它将返回 1、2、3 等,分别表示 1-50、51-100、101-150...

结果

更新 是的,你可以用以下公式来实现

=25*(INT((INT((A1-1)/50)*50+49)/50))*(INT((INT((A1-1)/50)*50+49)/50)+1)+(A1-INT((A1-1)/50)*50)*(INT((A1+49)/50))

或者

=25*INT((INT((A1+49)/50)*50+49)/50)*(INT((INT((A1+49)/50)*50+49)/50)+1)-(INT((A1+49)/50)*50-A1)*INT((A1+49)/50)

无需辅助表即可工作

答案2

这是一个比JohnSUN 的回答

=A1 + FLOOR((A1-1)/50,1)*(MOD(A1-1,50)+1) + 50*(FLOOR((A1-1)/50,1)*(FLOOR((A1-1)/50,1)-1))/2

你说你希望能够计算价值 无需知道价值N−1(以及所有前面的值)。我可以通过添加“辅助”列来做到这一点,并使公式更短。如果 ColumnZ不用于任何用途,则设置Z1=FLOOR((A1-1)/50,1),然后您可以使用

=A1 + Z1*(MOD(A1-1,50)+1) + 50*(Z1*(Z1-1))/2

我现在无法解释它是如何工作的。我只是玩了一会儿,运用了一些直觉,然后我就想出了这个。

答案3

这是一个简短的公式,它不需要辅助列,也不依赖于之前的值来计算输出:
=LET(groups,INT(([@number]-1)/50),groups*(groups+1)/2*50+(groups+1)*(MOD([@number]-1,50)+1))

公式原理:
50 * n*(n+1)/2 + mod * (n+1)
其中 n 是 50 个数字的完整组数int((n-1)/50)mod 是最后一个不完整组的数字数量MOD(n-1,50)+1)

例如计算256:

  • 50 * 1 + 50 * 2 + 50 * 3 + 50 * 4 + 50 * 5 + 6 * 6
  • = 50 * (1 + 2 + 3 + 4 + 5) + 6 * 6
  • = 50 * ( 5 * 6 / 2) + 6 * 6(1 到 n 的数字之和 = n(n+1)/2)*

在此处输入图片描述

答案4

int i = 175;
int result = i + (i / 50);

在这个例子中,结果等于 178。

如果你没有使用 int:

float i = 175;
float result = i + (float)Math.Floor((float)i / 50);

所以我猜公式应该是 X = A + FLOOR(A / 50)

相关内容