寻找第三种方法来在 Excel 中实现结果

寻找第三种方法来在 Excel 中实现结果

我有一个非常长的方程。(VLE)。
如果VLE具有某个属性(A1 = 5, for example)
我想取Absolute value of VLE,而不是只取VLE
通常,这看起来像

=if(A1=5, Abs(VLE),VLE)  

或者,我会有一个辅助列,

=if(A1=5,ABS(B1),B1)  

并参考那里的所有内容。

我想知道是否有一个3rd method只有VLE written once并且不使用辅助列的 。
抓取 VLE 的 sumif 是否可以挤进数组(同时已经使用 OR?)有没有办法让数组自引用?或者我只能使用之前提出的两个解决方案之一?

VBA 总是有可能的...但在那时,我宁愿重写一些方程式来防止这种情况发生。

答案1

C4-D4为长公式的占位符。然后,如果您可以更改 中的条件A1 ,使得A1始终为 1 或 2,并且 2 表示使用绝对值,则主列公式将只是 =((C4-D4)^$A$1)^(1/$A$1)。如果 中的条件A1无法更改,并且您可以保留一个额外的单元格,例如A2=1+(A1=5)则主列公式将是 =((C4-D4)^$A$2)^(1/$A$2)。否则,您始终可以使用更长的版本 =((C4-D4)^(1+(--($A$1=5))))^(1-(--($A$1=5))/2)

但请注意,这可能会导致准确性损失或溢出。

答案2

第三个选项是使用用户定义函数(自定义函数):

Public Function ConditionalAbsolute(v As Variant, boo As Boolean) As Variant
    If boo Then
        ConditionalAbsolute = Abs(v)
    Else
        ConditionalAbsolute = v
    End If
End Function

例如:

在此处输入图片描述

第一个参数是“长公式”;第二个参数是以下表达式:真的或者错误的

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件另存为.xlsm而不是.xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=CondionalAbsolute(A1+B1,C1=0)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

相关内容