EXCEL - 如何在同一单元格中显示公式输出和用户输入?

EXCEL - 如何在同一单元格中显示公式输出和用户输入?

我想寻求帮助,因为我相信这个问题需要 VB。我基本上有一个 CELL(A4),人们将在其中输入值以找出下面显示的相应计算。

不过我想添加一个附加功能,将常用值自动输入到同一个单元格(A4)中。

单元格 E7 和 E8 将接收输入并将其乘以 960(E7)或 765(E8)并将该值传输到单元格(A4),以便其余公式正确更新。

基本上让用户直接在 A4 中输入袋子数量或在 E7 或 E8 中输入容器数量。

**这就是我遇到的问题,因为当我在 A4 上输入公式时,只要直接在 A4 上输入值,它就会被删除。

**还请注意,E7 和 E8 的结果应该显示(在 A4 中),因为我也需要它。

我的表单:

在此处输入图片描述

答案1

您可以使用 VBA 中的工作表更改函数。例如

Private Sub Worksheet_Change(ByVal target As Range)

If Intersect(target, Range("e7:e8")) Is Nothing Then Exit sub

Application.enableevents = False
ActiveSheet.range("A4").formula="=if(e7="""",e8*765,e7*960)"
Application.enableevents = True

End Sub

每当工作表发生变化时,它都会检查更改的单元格是否为 e7 或 e8。如果是,它会将公式

=if(e7="",e8*765,e7*960)

在单元格 A4 中。如果您随后在单元格 A4 中输入一个值,它将保留,直到您再次更改 e7 或 e8。您可能需要进行调整才能让它完全按照您的意愿执行,但这个想法就在那里。

这将进入 vba 中 Microsoft Excel 对象下的工作表对象。

编辑:

为了符合评论。

新代码,仅当单元格中添加或更改值时才会执行某些操作,如果删除值则不会运行。

然后检查 e7 是否被编辑。如果是,则删除 e8。如果没有,我们知道 e8 已被编辑,因此删除 e7。公式保持不变。

Private Sub Worksheet_Change(ByVal target As Range)

    If Intersect(target, Range("e7:e8")) Is Nothing Or target.Value = "" Then Exit Sub
        Application.EnableEvents = False

        ActiveSheet.Range("A4").Formula = "=if(e7="""",e8*765,e7*960)"

        If Intersect(target, Range("e7")) Is Nothing Then
           ActiveSheet.Range("e7").ClearContents
        Else
            ActiveSheet.Range("e8").ClearContents
        End If

    Application.EnableEvents = True

End Sub

答案2

在商业中,我们通常希望使用公式来计算某个值,但仍然允许用户覆盖该公式特别案例。

A4代表总成本并包含:

=D8*G8

在哪里D8是单位成本,G8是数量。

但对于特殊客户,我们希望能够报出折扣价。我们将折扣价计入H8并修改公式如下:

=IF(H8<>"",H8,F8*G8)

所以如果我们想要覆盖,它就会进入H8;否则我们离开H8空白的。

答案3

您可以使用 VB 在计算阶段更改任何值。

但这样做意味着宏将改变 A4 中的值,并且您必须添加一些内容才能知道该值不应在第二次更新。

因此从理论上讲这是可能的,但这样做是非常不切实际的。

如果您只是想要一个包含常用值的下拉列表,则无需使用 VB。Excel 内置了此功能。您可以通过 来实现data validation

答案4

我使用的解决方案是,您只有几个单元格,我希望既能进行计算,又能输入值来覆盖公式或删除输入的内容并让公式起作用。

根据需要设置您的工作表..然后对于您想要覆盖的单元格,在屏幕外的列中设置一个相同的单元格,即列 az,然后在那里剪切并粘贴您的 ell 在此特殊输入中,更改您的公式,但使用 if 来测试是否已在原始单元格中输入值。

然后复制此单元格,选择原始单元格并特殊粘贴链接的图片。

现在选择图片并向其正下方的单元格添加超链接,如果您认为它可能会因插入行而移动,请使用行名称。

现在您应该发现该单元格看起来像是正在显示公式中的值,当您单击该单元格时,超链接会跳转到下面的单元格,输入值后显示会发生变化,删除它后会显示公式值。

还可以考虑在公式单元格上添加一个条件格式,如果显示的单元格中有值,该格式就会改变,这有助于提醒您已输入了手动值。

希望这有助于设置看起来简单且无需宏即可执行的表单。

特里

相关内容