【问题标题】:Formula in Excel - Logarithmic AverageExcel 中的公式 - 对数平均值
【发布时间】:2015-06-11 12:51:44
【问题描述】:

我需要实现这个等式:

在 c# 中非常简单:

static double LogarithmicSummed(IReadOnlyList<double> values)
{
    double outVal = 0;
    for (int i = 0; i < values.Count; i++)
    {
        outVal = outVal + Math.Pow(10, values[i] / 10);
    }
    return 10 * Math.Log10(outVal);
} 

我需要在以编程方式打印数据的 Excel 工作表中验证数据。那是原始数据、我对原始数据的 c# 计算以及应该与我的 c# 计算匹配的 excel 公式。就是不知道怎么用excel写公式。

我知道数据所在的行和列,并且它们彼此相邻。例如,如果我需要算术平均值,即:

我可以打印出每一行:

// If row = 1, startColumn = A, endColumn = D, noOfColumn = 4. This would print: =SUM(A1:D1)/4
mean[row] = @"=SUM(" + startColumn + row + ":" + endColumn + row + ")/" + noOfColumns;

我会打印出什么来匹配我写的第一个公式?或者我需要用 Excel 写什么?

【问题讨论】:

    标签: c# excel math excel-formula formula


    【解决方案1】:

    没有 VBA:

    将您的数据放入 A1A10 并在 B1 中输入:

    =10^(A1/10)
    

    然后抄下来。然后在另一个单元格中输入:

    =10*LOG10(SUM(B1:B10))
    

    您可以通过以下方式避免“帮助”列(列B

    =10*LOG10(SUMPRODUCT(10^((A1:A10)/10)))
    

    【讨论】:

    • 我有多行和多列的值,所以如果我必须对每个单元格进行中间计算,它会变得非常混乱且难以获得概览。您的“没有辅助列”的公式给出了错误的结果。
    • @Daltons 用一小部分数据和预期结果更新您的原始问题,我们可以解决问题!
    • 对不起,它确实有效。我犯了括号错误。你完全理解了这个问题。谢谢。
    【解决方案2】:

    如果这就是您输入公式的方式,那么为什么不使用总和的字面形式呢?即在列上使用for 循环并填写:

    10*log(10^(A1/10)+10^(A2/10)+10^(A3/10)+10^(A4/10))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多