将函数应用于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保持不变。 我不想改变这个,因为我必须用它来绘制这个频谱。 所以理想情况下,我只想在一个单元中完成所有的工作。 我可以用这个冗长的公式来做到这一点,但是对于所有的频率来说,都需要相当长的一段时间。

当然,我可以简单地使用另一列,并在那里做math,但这似乎也不方便。

其实这个公式就是这样的:

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

或这个:

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

在这里输入图像说明

它有点笨重,但是你可以为一个单元做10 ^(L_a / 10),然后点击并拖动右下angular来使所有的单元都运行。 然后创build另一个单元格,这些单元格的总和为10 * log10。

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

 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 

只需select您要插入公式的所有单元格,然后运行该子项。 确保你的公式是有效的。