EXCEL:循环参考问题

EXCEL:循环参考问题,excel,Excel,我想检查当前单元格的值 如果为空,则生成一个随机数 否则就保持原样 =IF(P4<>0,RANDBETWEEN(1,100),P4) =IF(第40页,第(1100)页,第4页) 但是,当我打开工作表时,我得到了一个循环引用问题,并且P4的值正在更改,即使旧值不是空的将此代码放入工作表的专用代码表中(右键单击工作表选项卡,查看代码) 将此代码放入工作表的专用代码表(右键单击工作表选项卡,查看代码) 如果包含公式的单元格引用自身,则将获得循环引用。Null也不同于0,尽管根据描述,

我想检查当前单元格的值 如果为空,则生成一个随机数 否则就保持原样

=IF(P4<>0,RANDBETWEEN(1,100),P4)
=IF(第40页,第(1100)页,第4页)

但是,当我打开工作表时,我得到了一个循环引用问题,并且P4的值正在更改,即使旧值不是空的

将此代码放入工作表的专用代码表中(右键单击工作表选项卡,查看代码)


将此代码放入工作表的专用代码表(右键单击工作表选项卡,查看代码)


如果包含公式的单元格引用自身,则将获得循环引用。Null也不同于0,尽管根据描述,您的测试是for is Null(不是。我假设该位是您尝试测试Null的位置)。在这种情况下,Null将是“”。您可以使用VBA和选择更改事件来执行测试和更改。现在你有了一个例子!如果包含公式的单元格引用自身,则将获得循环引用。Null也不同于0,尽管根据描述,您的测试是for is Null(不是。我假设该位是您尝试测试Null的位置)。在这种情况下,Null将是“”。您可以使用VBA和选择更改事件来执行测试和更改。现在你有了一个例子!与变化事件。
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If not intersect(Target, Range("P4")) Is Nothing Then
        On Error GoTo safe_exit
        Application.EnableEvents = False
        If Range("P4") = vbNullString Then
            Range("P4") = Application.RandBetween(1, 100)
        End If
    End If
safe_exit:
    Application.EnableEvents = True
End Sub