将excel公式转换为基于Web的应用程序

时间:2014-10-29 05:14:18

标签: c# asp.net excel-formula cells

我有一张excel表,其中每个单元格上应用的公式很少,现在我想将它们转换为基于Web的应用程序。

一切似乎都很好但是很少有细胞具有彼此依赖的公式。

例如,

输入单元格:

费用:9790
分配:3%
非分配:97%

具有公式的单元格

Cell-1:(Cell-3 * Allocation) =(10000 * 3%)
结果:300美元

Cell-2:(非分配* Cell-3) =(10000 * 97%)
结果:$ 9700

Cell-3:(费用+单元-1 - 损坏费用) =(9790 + 300 - 90)
结果:$ 10000

所以这里我将如何计算依赖的细胞值,因为Cell-1依赖于Cell-3而Cell-3依赖于Cell-1?

编辑:

损坏费用(总费用*分配)
并且总费用基于Cell-3计算(条件如Cell-3 <= 10000然后3000等)

2 个答案:

答案 0 :(得分:2)

我不知道excel能够做到这样的事情,但就这样吧。

事实证明,这是学校代数中的一个简单的练习:

  • 让我们给 Cell-3 变量z
  • Cell-1 变量x

然后你有公式:

x = z*Allocation

z = Cost + x - Fee

因此您可以将后者插入第一个并获取:

x = (Cost + x - Fee) * Allocation

在左侧获取所有x

(1-Allocation)*x = (Cost - Fee) * Allocation

并划分

x = (Cost - Fee) * Allocation / (1-Allocation)

没有插入z:

z = Cost - Fee + (Cost - Fee) * Allocation / (1-Allocation)

(你也可以简化最后一次)

所以让我们查看Cost = 9790Fee = 90Allocation = 0.03

x = 9700 * 0.03 / 0.97 = 300
z = 9700 + 300 = 10000

似乎是对的。

备注

显然,使用某种自动转换工具,你可能想用一些常见的编程语言,如C#编写,这是很难的,因为你需要教你的程序如何做基本的代数;) - 但是如果你只有一些单元格,只想翻译它,你可以手动完成。

答案 1 :(得分:1)

您没有标记JavaScript,但这是一个客户端JS解决方案,可以在c#或asp.net中轻松实现:

var Cost = 9790,
    Allocation = 0.03,
    Fee = 90,
    C1 = 0,
    C3 = 0,
    C1iterations = 100,
    C3iterations = 100;

function Cell1() {
  if(--C1iterations) {
    C1 = Cell3() * Allocation;
  }
  else {
    C1iterations = 100;
  }
  return C1;
}

function Cell3() {
  if(--C3iterations) {
    C3 = Cost + Cell1() - Fee;
  }
  else {
    C3iterations = 100;
  }
  return C3;
}

document.body.innerHTML= 'Cell1: '+Cell1()+'<br>Cell3: '+Cell3();

您可以告诉Excel允许循环引用,在这种情况下,它默认为100次迭代。此代码复制了该功能,因此您无需通过代数。

所有变量都是全局的,用于演示目的,但是通过使用闭包可以很容易地将它们变为局部变量。