【问题标题】:Convert excel formulas to web based application将 Excel 公式转换为基于 Web 的应用程序
【发布时间】:2014-10-29 05:14:18
【问题描述】:

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

一切似乎都很好,但很少有单元格具有相互依赖的公式。

前,

输入单元格:

成本:9790
分配:3%
未分配:97%

带有公式的单元格:

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

单元格 2:(非分配 * 单元格 3) = (10000 * 97%)
结果:$9700

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

那么在这里我将如何计算依赖单元格值,因为 Cell-1 依赖于 Cell-3 而 Cell-3 依赖于 Cell-1 ?

编辑:

损害费用(总费用 * 分配)
并且总费用根据 Cell-3 计算(例如 Cell-3

【问题讨论】:

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


    【解决方案1】:

    我不知道 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
    

    似乎是对的。

    备注

    显然,使用某种自动转换工具来实现这一点要困难得多,因为你需要教你的程序如何做基本的代数;) - 但是如果您只有其中几个单元格,只想翻译它,您可以手动完成。

    【讨论】:

    • +1 感谢您的回答,该答案有效,但具有一个固定值Fee on Damage,该值也是基于其他单元格计算的。我已经对这个问题进行了编辑。你能帮我解决这个问题然后我会接受这个答案。
    • 我没有看到你的所有条件(Excel 可以处理这些东西给我留下了深刻的印象 - 必须在某个时候尝试一下) - 基本上像这样的条件使 计算 i> 难度更大,因为您必须手动处理案例分析 - 在这里情况变得更糟,因为您获得了一个迭代公式并且必须寻找一个固定点(excel:真的?哇!) - 你确定吗?你在excel里有这个吗?
    • 是的。因为excel会重新计算每个单元格上的值,值会发生变化。如果你跳过条件,如果我只想得到Fee on damage,那么你能帮我吗?
    • @VishalSuthar if Fee on damage 不依赖任何其他单元格,而不是我给你的单元格
    • Fee on damage = Total Fee * AllocationTotal Fee 是从Cell-3 计算出来的,这个fee on damage 也用于xz
    【解决方案2】:

    您没有标记 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 次迭代。此代码复制了该功能,因此您无需处理代数。

    出于演示目的,所有变量都是全局变量,但可以通过使用闭包轻松地将它们设置为局部变量。

    【讨论】:

    • 好的。它会在 asp.net 代码隐藏而不是 javascript 中实现吗??
    • 在经典 ASP 中,您可以按原样使用代码,方法是将其放在 &lt;script&gt;...&lt;/script&gt; 标记内(以及 &lt;%...%&gt; 标记外)。我假设 ASP.net 的工作方式类似。然后客户端计算机将进行计算。如果你喜欢隐藏计算,你可以使用 ASP 语法重写函数。
    • +1 它帮助我思考这个方向。不知何故,大约 99%,我已经解决了。!谢谢
    猜你喜欢
    • 2020-03-31
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多