首页 > 解决方案 > 在同一单元格中输入值和背景公式

问题描述

我正在构建一个 Excel 工作表,我希望在与随机数输入相同的单元格中有一个背景公式。

这是今天的价值观。

A1: 100<Br>
A2: 200<BR>
A3: 300

C1: 1,1

我想要A1A2并在输入值后按 EnterA3键乘以。C1比我想改变C1未来的价值和所有的价值column A都将相应更新。

如果我输入 100,我希望它在上面的示例中将其更新为 110,但如果我稍后更改C11,2,它将自动变为 120。

这当然在另一列中非常容易做到,例如B:=A1*$C$1 ”中的另一列中非常容易做到。但我真的很想在这个文档中只使用一个单元格。

这不可能没有VBA?如果是,我该怎么做VBA?提前致谢。

标签: vbaexcel

解决方案


在OP的澄清后编辑

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim values As Variant
    Dim rngToChange As Range
    Dim targetRow As Long

    Select Case True
        Case Not Intersect(Target, Range("A1:A3")) Is Nothing
            Set rngToChange = Intersect(Target, Range("A1:A3"))
            If Target.Count = 1 Then targetRow = Target.Row

        Case Target.Address = "$C$1"
            Set rngToChange = Range("A1:A3")

        Case Else
            Exit Sub
    End Select

    With Range("C1")
        If .Comment Is Nothing Then .AddComment(Join(Application.Transpose(Range("A1:A3").Value), " ")).Visible = False
        values = Split(.Comment.Text, " ")
        If targetRow <> 0 Then
            values(targetRow - 1) = Target.Value
            .ClearComments
            .AddComment(Join(values, " ")).Visible = False
        End If
    End With

    Dim cell As Range
    On Error GoTo goodexit
    Application.EnableEvents = False
    For Each cell In rngToChange
        cell.Value = values(cell.Row - 1) * Range("c1").Value
    Next

goodexit:
    Application.EnableEvents = True

End Sub

推荐阅读