如果我以编程方式或手动输入一个值,比方说10000,进入一个excel单元格,我需要它自动将它除以1000,这会发生吗?
No.1,我不是在询问显示格式,我需要认真更改输入的值。
No.2,该公式不适用于整个工作表。
答案 0 :(得分:2)
您可以使用Worksheet更改事件来执行此操作。但是,为了确保您只执行一次而不是每次触发此事件,您都需要在某处跟踪该值。您可以在不可见的工作表,工作表上的其他位置等处执行此操作。
逻辑上,你基本上检查一个单元格被改变的时候,如果它在你希望这种情况发生的cels范围内。如果是,则通过将其映射到记录,确保它与您触摸单元格之前的值不同(未进行任何更改)。如果它已更改,您只需除以1000并更新记录。
希望这有帮助。
Private Sub Worksheet_Change(ByVal Target As Range)
'Turn off events to stop this from looping
Application.EnableEvents = False
'Let's say you want this to happen for A1:A10
'Store the value of the cells on a hidden sheet or somewhere. Here let's assume B1:B10 is the hidden record
If Target.Column = 1 Then
If Target.Row > 0 And Target.Row < 11 Then
If Target.Value <> Target.Offset(, 1) Then
Target.Value = Target.Value / 1000
Target.Offset(, 1).Value = Target.Value
End If
End If
End If
'Turn events back on
Application.EnableEvents = True
End Sub
很抱歉由于某种原因,格式化代码没有正确缩进代码...
答案 1 :(得分:0)
如果我是你,我会回避这一点,因为你会因为永久划分1000来重新编辑单元格而遇到问题。当然,编辑开始时你可以将数字乘以1000,但我不认为是特别健壮。
我将采用的方法是使电子表格的一个区域(用户通常不会看到)包含form = A1 / 1000的公式,并且其余的计算流程依赖于这些单元格。
这样做意味着您可以将所有内容保存在电子表格中,而无需VBA。