【问题标题】:Converting for loop to Excel将 for 循环转换为 Excel
【发布时间】:2017-09-30 02:37:47
【问题描述】:

我正在尝试将 for 循环等效为 Excel 可用条目。 我有一点编码经验,但除了基本功能之外,没有使用 Excel。

场景:寻找购买 N 件商品的总成本。
每件商品的价格都比前一件商品高出固定费率(目前为 15%)。 我可以得到项目 N 的成本。 我希望单元格显示使所有项目达到并包括 N 的总成本。

N = 列表中的项目总数,这会根据电子表格其他地方的计算而改变。

Rate = 15% 或 0.15,但可以更改,所以我不想硬编码。

这个公式给了我项目 N.____ 的成本 ((1/(1+率))*(((1+率)^(N)))

我认为类似下面的方法会起作用,但我不知道如何编写这是 Excel 可以使用的一种方式。

Total = 0;
for(i=1,i=N,i++){
  Total = Total+((1/(1+Rate))*(((1+rate)^(i)));
};

此图表显示了我想要的手动计算。

项目 → N 项目的总成本

  1. → 1.00
  2. → 2.15
  3. → 3.47
  4. → 4.99
  5. → 6.74
  6. → 8.75
  7. → 11.07
  8. → 13.73
  9. → 16.79
  10. → 20.30

提前感谢您提供的任何帮助。

加里

【问题讨论】:

  • 你不需要循环。几何数列之和有一个封闭形式。您的每个术语都是(1+Rate)^(N-1),所以第一个 N 的总和是 ((1+Rate)^N)-1)/Rate
  • 谢谢杰里,这个答案正是我想要弄清楚的,但我只是不知道“几何序列”这个词来搜索它。像魅力一样工作,易于使用。

标签: excel algorithm


【解决方案1】:

如果 A1 是“速率”,A2 是“N”,那么:

=SUMPRODUCT((1/(1+A1))*((1+A1)^ROW(A1:INDEX(A:A,A2))))

【讨论】:

  • 感谢 Dirk 的回答。我不明白“A1:Index”部分,所以我必须查一下,以便以后尝试使用它。
  • @GaryHullah INDEX 返回一个范围(不是一个值)。所以对于INDEX(A:A,A2),它将是A 列和A2 中指定的行(在这种情况下它是14,所以它将是A14)。 SingleCell : SingleCell 是一个范围,这样它就变成了从 A1 到 A14 的范围。在ROW 内部,它变成了一个简单的数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14},用作递增的i
【解决方案2】:

这就是我想出的,尽管它与 Dirk Reichel 的出色答案有点相似。

=SUMPRODUCT((1/(1+$B$2))*((1+$B$2)^ROW($A$1:A1)))

基本上我用SUMPRODUCT 将总数加到相应的行。

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 2015-12-03
    • 2021-03-12
    • 2018-02-22
    • 2017-04-26
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多