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