Excel在同一单元格中输入和输出

Excel在同一单元格中输入和输出,excel,formula,Excel,Formula,我不是程序员,我需要一些帮助 我有一个excel表格,我想在后台有一个公式,当我输入一个数字时,我想在公式中计算它,而不在同一单元格中删除它 公式如下X*6.75%+X,其中X是输入。 我们将非常感谢您的帮助 谢谢。您没有标记为需要VBA,但这是我能想到的实现这一目标的唯一方法。 正如@FoxfireAndBurnsAndBurns所说的,在没有VBA的情况下,每次都必须更新公式 对于VBA方法,您需要将此代码添加到特定的工作表模块(根据需要更新单元格引用): 编辑:我已更新代码,在注释中包含建

我不是程序员,我需要一些帮助

我有一个excel表格,我想在后台有一个公式,当我输入一个数字时,我想在公式中计算它,而不在同一单元格中删除它

公式如下X*6.75%+X,其中X是输入。 我们将非常感谢您的帮助


谢谢。

您没有标记为需要VBA,但这是我能想到的实现这一目标的唯一方法。
正如@FoxfireAndBurnsAndBurns所说的,在没有VBA的情况下,每次都必须更新公式

对于VBA方法,您需要将此代码添加到特定的工作表模块(根据需要更新单元格引用):


编辑:我已更新代码,在注释中包含建议。

您尚未标记为需要VBA,但这是我唯一能想到的实现方法。
正如@FoxfireAndBurnsAndBurns所说的,在没有VBA的情况下,每次都必须更新公式

对于VBA方法,您需要将此代码添加到特定的工作表模块(根据需要更新单元格引用):


编辑:我已经更新了代码,在注释中加入了建议。

我不认为这比简单地在公式中添加一列更好,但是

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

  If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
  'fire only in column A

    If IsNumeric(Target.Value2) Then ' only makes sense to apply if it's a number _
    otherwise it would produce a Type mismatch error

        Application.EnableEvents = False 'to prevent constant looping on change
        Target = Target * 6.75 / 100 + Target
        Application.EnableEvents = True

    Else
         MsgBox ("I can only take numeric values")
    End If

End Sub

注意:
工作表\u Change
事件的代码放在相应工作表选项卡的模块内非常重要。 例如,如果要在名为“
Sheet1”
的工作表中启动公式,则需要确保已选择
Sheet1
模块:


将此代码粘贴到其他任何位置(例如
Sheet2
,或
模块1
)将不起作用

我不认为这比简单地在公式中使用额外的列更好,但是

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

  If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
  'fire only in column A

    If IsNumeric(Target.Value2) Then ' only makes sense to apply if it's a number _
    otherwise it would produce a Type mismatch error

        Application.EnableEvents = False 'to prevent constant looping on change
        Target = Target * 6.75 / 100 + Target
        Application.EnableEvents = True

    Else
         MsgBox ("I can only take numeric values")
    End If

End Sub

注意:
工作表\u Change
事件的代码放在相应工作表选项卡的模块内非常重要。 例如,如果要在名为“
Sheet1”
的工作表中启动公式,则需要确保已选择
Sheet1
模块:

将此代码粘贴到其他任何位置(例如
Sheet2
,或
模块1
)将不起作用

看看这个:

Sub YourModuleName()
For Each cell In Application.Selection.Cells
cell.Formula = "=" + CStr(cell.Value) + "*" + "n5"
Next
End Sub
n5是可编辑的单元格

现在,您可以突出显示一系列单元格并运行模块进行计算

请查看以下内容:

Sub YourModuleName()
For Each cell In Application.Selection.Cells
cell.Formula = "=" + CStr(cell.Value) + "*" + "n5"
Next
End Sub
n5是可编辑的单元格


现在,您可以高亮显示一系列单元格,然后运行模块进行计算

您不能这样做。时期您唯一的选择是有两个单元格,一个用于输入,一个用于输出,是承载公式的最后一个(输出)。实现所需的唯一方法是在每次需要计算时修改公式。例如,如果您键入一个单元格
=(2*0.0675)+2
,您将进入同一单元格
2.135
。如果手动更改
2
并键入
10
,则会得到
10.675
。但这是Excel中最糟糕的工作方式。在2个单元格中,这将更容易,只需更改单元格中的数字即可。但是如果你需要它,不管是什么原因,恐怕唯一的办法就是我告诉你的方式。你不能那样做。时期您唯一的选择是有两个单元格,一个用于输入,一个用于输出,是承载公式的最后一个(输出)。实现所需的唯一方法是在每次需要计算时修改公式。例如,如果您键入一个单元格
=(2*0.0675)+2
,您将进入同一单元格
2.135
。如果手动更改
2
并键入
10
,则会得到
10.675
。但这是Excel中最糟糕的工作方式。在2个单元格中,这将更容易,只需更改单元格中的数字即可。但是如果你需要它,不管是什么原因,恐怕唯一的办法就是我告诉你的方式。嗨@DarrenBartrup Cook,我准备好的答案中几乎有你的代码的完全相同的副本。我没有在这里发布它的原因是,尽管有
EnableEvents=False
,但单元格值似乎一直在错误地自我更新。例如,即使使用您的代码,也可以尝试输入
4
它会变为
7.37E+19
,这不是正确的计算方法。因此,我的解决方案中还有一个细节,在开火前对目标进行
isNumeric()
检查可能是个好主意,防止类型不匹配error@Rawrplus我试过4,结果是4.27——使用
2010
(以防万一)。当然,我绝对同意
IsNumeric
。此外,如果我能提出建议,OP希望将公式保留在后台,因此可能
Target.formula=“=…”
可能是一个不错的添加?:)哎呀,这是我在循环方面的疏忽。我在以前的项目中留下了一行代码,这些代码触发并重新启用了事件。代码按预期工作。我发布了我的答案版本,我觉得它提供了一些更详细的信息(如果你不介意的话),但我还是把你的投了更高的票。我没有在这里发布它的原因是,尽管有
EnableEvents=False
,但单元格值似乎一直在错误地自我更新。例如,即使使用您的代码,也可以尝试输入
4
它会变为
7.37E+19
,这不是正确的计算方法。因此,我的解决方案中还有一个细节,在开火前对目标进行
isNumeric()
检查可能是个好主意,防止类型不匹配error@Rawrplus我试过4,结果是4.27——使用
2010
(以防万一)。当然,我绝对同意
IsNumeric
。此外,如果我能提出建议,OP希望将公式保留在后台,因此可能
Target.formula=“=…”
可能是一个不错的添加?:)哎呀,那是个疏忽