Excel - 两个单元格中任意一个的计算输入都会计算另一个单元格

Excel - 两个单元格中任意一个的计算输入都会计算另一个单元格

我必须在不同的场景中多次使用它。所以我将举一个例子,希望我可以在其他地方重复使用代码。我需要计算圆柱体的直径或高度(用于页面的其他地方),这两个单元格位于 1 列 E17、E18。在 1 中输入数据应该可以计算出另一个(因为高度和直径与 E16 中的体积相关)。希望我不需要宏,因为我是新手。

答案1

输入您的直径A2圆柱高度B2。 在C2输入圆柱体积的公式:

=B2*PI()*(A2/2)^2

然后复制C2并将 PasteSpecialValues 返回到其自身:

在此处输入图片描述

最后将以下事件宏放置在工作表代码区域:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A2 As Range, B2 As Range, A2B2 As Range
    Dim Intersection As Range, C2 As Range
    Dim pie As Double
    
    pie = WorksheetFunction.Pi()
    Set A2 = Range("A2")
    Set B2 = Range("B2")
    Set C2 = Range("C2")
    Set A2B2 = Range("A2:B2")
    Set Intersection = Intersect(Target, A2B2)
    
    If Target.Count > 1 Then Exit Sub
    If Intersection Is Nothing Then Exit Sub
    If Target.Value <= 0 Then Exit Sub
    
    Application.EnableEvents = False
        If Target.Address(0, 0) = "A2" Then
            B2.Value = C2.Value / (pie * (A2.Value / 2) ^ 2)
        Else
            A2.Value = 2# * ((C2.Value / B2.Value) / pie) ^ 0.5
        End If
    Application.EnableEvents = True
            
End Sub

如果你改变A2, 然后B2会调整。
如果你改变B2, 然后A2会调整。
如果你改变C2,不会立即发生任何事情,但未来对A2或者B2将根据新的体积值重新计算另一个。

因为它是工作表代码,所以很容易安装并自动使用:

  1. 右键单击 Excel 窗口底部附近的选项卡名称
  2. 选择查看代码-这将打开一个 VBE 窗口
  3. 粘贴内容并关闭 VBE 窗口

如果您有任何疑虑,请首先在试用工作表上尝试一下。

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

消除宏:

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

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

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

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

要了解有关事件宏(工作表代码)的更多信息,请参阅:

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

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

相关内容