【问题标题】:How to do Calculation in Excel Cell upon leaving the cell离开单元格后如何在Excel单元格中进行计算
【发布时间】:2017-09-19 19:18:27
【问题描述】:

我在 Excel-2010 和 Excel-2013 上工作。我想做如下的事情:

无论我在单元格中输入什么数字,该数字都必须除以 60,并且在按 TAB 时,结果应该打印在同一个单元格上。如果我回到这个单元格,应该会出现输入的数字,而不是计算的结果。

我对 Excel 编程知之甚少。由于公司的安全政策,我无法打开大部分网站。

谁能帮我解决这个问题!

【问题讨论】:

  • 您是否有任何适用此规则的单元格范围,或者您希望此规则适用于工作表中的每个单元格?
  • 如果该单元格中的值用于后续计算,应该使用哪个值?输入的值,还是 除以 60 的值?
  • 这个练习的目的是什么?如果要进行时间计算,可能有更简单的方法来完成。
  • 是的,是计算时间的。当我输入 60 时,单元格应转换为 1(这里我输入 60 分钟,但我应该将其视为 1 小时)
  • @Ron Rosenfeld:我在下面的位置又创建了一篇我的实际目的的帖子。你能试一下吗? stackoverflow.com/questions/46416787/…

标签: excel


【解决方案1】:

请使用此代码。您应该将此代码粘贴到您的Worksheet module,而不是Regular module。那么请将Range("A1:A100")调整到数字应该被划分的范围。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DivRg As Range
Set DivRg = Range("A1:A100")
Set DivRg = Application.Intersect(Target, DivRg)

If DivRg Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

Application.EnableEvents = False
Target = Target / 60
Target.Offset(0, 5).Value = 1
Application.EnableEvents = True

Set DivRg = Nothing

End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim DivRg As Range

Set DivRg = Range("A1:A100")
Set DivRg = Application.Intersect(Target, DivRg)

If DivRg Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

Application.EnableEvents = False
If Target.Offset(0, 5).Value = 1 Then
Target = Target * 60
Target.Offset(0, 5).Value = 0
End If
Application.EnableEvents = True

Set DivRg = Nothing
End Sub

要完成您的任务,您将需要一个帮助列(我选择了列F),但您可以选择任何列并更改这部分代码以解决该列Target.Offset(0, 5).Value。例如,如果您希望帮助列成为列 E ,则使用此代码 Target.Offset(0, 4).Value 。确保在 subs 的所有 3 个部分中替换此代码。

【讨论】:

  • 这不是将输入的内容除以 60 吗?这如何完成他的其余要求:如果我回到这个单元格,应该会出现输入的数字,而不是计算的结果。
  • 你说得对,我误解了他的问题。我调整了答案。感谢您的提醒。
  • @Kresimir L. 非常感谢您的回复,但是,我无法使用您的逻辑来满足我的要求。我将您的答案标记为已接受。我在下面的位置又创建了一篇包含更多信息的帖子。你能调查一下吗! stackoverflow.com/questions/46416787/…
猜你喜欢
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 2011-02-25
相关资源
最近更新 更多