将函数应用于Excel中的每个单元格

时间:2016-05-02 15:27:50

标签: excel

我有来自声学测量的Terz光谱数据,我想计算整体水平。每个Terz波段的值均以分贝为单位。因此,计算公式有点冗长。它将是L_overall = 10 * log10(10 ^(L_a / 10)+ 10 ^(L_b / 10)+ 10 ^(L_c / 10)+ 10 ^(L_d / 10)......)。

由于频率很高,我不想手工编写整个公式。在进行外部计算(10 * log10(x + y + z + ...))之前,我也不想使用另一列进行内部计算(10 ^(x / 10))。所以我想知道Excel中是否有一个函数允许对每个单元格应用计算,例如Matlab中的计算(cellfun,arrayfun)。

我希望最终得到像L_overall = 10 * log10(10 ^(B10:B80 / 10)这样的东西,这样我就可以在一个单元格中进行所有计算。

增加: 我忘了说我希望terz-data不变。我不想改变它,因为我必须使用它来绘制该频谱。理想情况下,我希望所有工作只在一个单元格中完成。我可以通过冗长的公式来做到这一点,但是为所有频率键入它需要相当长的时间。

当然,我可以简单地使用另一列并在那里进行数学计算,但这似乎也很不方便。

3 个答案:

答案 0 :(得分:2)

实际上公式是这样的:

=10*LOG(SUM(INDEX(10^(B10:B80/10),)),10)

或者这个:

=10*LOG(SUMPRODUCT(10^(B10:B80/10)),10)

enter image description here

答案 1 :(得分:0)

它有点笨重,但你可以为一个单元格做10 ^(L_a / 10),然后单击并拖动右下角以使所有单元格运行。 然后创建另一个单元格,该单元格占用这些单元格的SUM的10 * log10。

答案 2 :(得分:0)

如果你的目标只是在一堆单元格中插入一个特定的公式,你可以使用它:

For Each rCell In Application.Selection
      rCell.Formula = "=10*log10(10^(L_a/10)+10^(L_b/10)+10^(L_c/10)+10^(L_d/10)...)"
Next rCell

只需选择要插入公式的所有单元格,然后运行sub。确保您的公式有效。