1

如果我以编程方式或手动输入一个值,比如说 10000,到一个 excel 单元格中,我需要它自动将它除以 1000,这会发生吗?

No.1,我不是在询问显示格式,我需要认真更改输入的值。

No.2,公式不适用于整个工作表。

4

2 回答 2

2

您可以使用 Worksheet 更改事件来执行此操作。但是,为了确保您只执行一次而不是每次触发此事件时,您需要在某处跟踪该值。您可以在不可见的工作表上、工作表上的其他位置等上执行此操作。

从逻辑上讲,您基本上检查一个单元格何时更改,如果它在您希望发生的单元格范围内。如果是,请确保它与您触摸单元格之前的值不同(未进行任何更改),方法是将其与记录进行关联。如果它已更改,您只需除以 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

抱歉,由于某种原因,格式化的东西没有正确缩进代码......

于 2013-05-23T03:55:11.653 回答
0

如果我是你,我会回避这个,因为你会在重新编辑单元格时遇到问题,永久除以 1000。当然,在编辑开始时你可以将数字乘以 1000,但我认为这不是特别强大。

我将采取的方法是让电子表格的一个区域(用户通常看不到)包含 =A1/1000 形式的公式,并让计算流程的其余部分取决于这些单元格。

这样做意味着您无需 VBA 就可以将所有内容保存在电子表格中。

于 2013-05-23T07:08:42.253 回答