我正在尝试编写一个公式,该公式可以让我计算出具有两个变量的公式。我希望能够输入变量A并计算B,或者输入变量B并计算A。
计算我的变量的公式:
CAP = NOI /值
值在单元格A1中
NOI是一个已知值。我希望为Value和CAP使用单独的单元格,并能够将数据输入到任一单元格中,并让其他单元格根据我的数据输入进行计算。
我打算尝试使用IF
的{{1}}函数,但是我不确定如何做到这一点不会覆盖公式。
答案 0 :(得分:4)
您可以有一个公式,也可以输入一个值,但不能两者都做。解决方法是使用Worksheet_change
事件来监视两个单元格中的每一个,并根据输入的任何值来设置另一个。
这将进入工作表代码模块:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Goto haveError:
If Target.Address = "$A$2" Then
Application.EnableEvents = False
Me.Range("A3").Value = 'set value in A3
Application.EnableEvents = True
End If
If Target.Address = "$A$3" Then
Application.EnableEvents = False
Me.Range("A2").Value = 'set value in A3
Application.EnableEvents = True
End If
Exit sub
haveError:
'make sure events are re-enabled if an error occurs
Application.EnableEvents = True
End Sub
答案 1 :(得分:0)
作为另一种方法,您可以在单元格A1中输入数字。在单元格A2状态中,如果是上限或上限。在单元格A3中放置您的NOI。由于两种情况下的公式基本相同,因此您可以在A4中简单地使用以下内容:
=A3/A1
在B4中,我将放置以下内容来指示它是哪个值:
=IF(A2="Value", "CAP", IF(A2="CAP","Value", "Enter Type in A2"))
但是,如果您绝对希望在A1或A2中输入数据,然后计算另一个单元格,那么蒂姆·威廉姆斯指出,您唯一的方法就是VBA。
答案 2 :(得分:0)
有一种方法可以在没有宏的情况下使用 ISFORMULA() 函数执行此操作,该函数在 Excel 2013 或更高版本中可用。诀窍是 ISFORMULA() 可以在不实际评估单元格值的情况下查询单元格的状态,因此可用于指导公式以避免引用该单元格并导致循环引用。
即:
A1 是价值,A2 是 NOI(给定),A3 是 CAP
A1: =IF(NOT(ISFORMULA(A3)), A2 / A3, "")
A2: 123.456
A3: =IF(NOT(ISFORMULA(A1)), A2 / A1, "")
A1 和 A3 都将保持空白,直到您在其中一个中输入一个值,此时另一个将被适当计算。