允许两个单元格相互依赖

时间:2019-06-25 19:44:52

标签: excel vba excel-formula

我正在尝试编写一个公式,该公式可以让我计算出具有两个变量的公式。我希望能够输入变量A并计算B,或者输入变量B并计算A。

计算我的变量的公式:

  • 值= NOI / CAP
  • CAP = NOI /值

  • 值在单元格A1中

  • NOI在A2单元格中
  • CAP在单元格A3中

NOI是一个已知值。我希望为Value和CAP使用单独的单元格,并能够将数据输入到任一单元格中,并让其他单元格根据我的数据输入进行计算。

我打算尝试使用IF的{​​{1}}函数,但是我不确定如何做到这一点不会覆盖公式。

3 个答案:

答案 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 都将保持空白,直到您在其中一个中输入一个值,此时另一个将被适当计算。