如何在Excel中实时validation和更正数据?

我知道Excel有数据validationfunction,但有没有办法自动应用更改为用户,而不是提示他们有问题?

例如,我们有一个用于添加项目的内部系统的通用电子表格模板。 在第一列中,对于产品编号,不能有任何非法字符。 因此,如果用户在A1中inputAN-XR10LP / 1,然后单击下一个单元格,我想要validation将A1值更正为ANXR10LP1而无需用户执行任何操作。

任何想法,我可以如何开始呢?

我认为你只能用VBA完成这个。 尝试下面的代码。 如果您在单元格上有数据validation,则可能需要进行调整。

将此模块放置在您希望validation数据的工作表对象中。

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Rows.Count = 1 Then '-> make sure row count is 1 and target is in column A, can further refine if needed Dim strValue As String strValue = CleanString(Target.Value) Application.EnableEvents = False Target = strValue Application.EnableEvents = True End If End Sub Function CleanString(str As String) As String CleanString = Replace(str, "-", "") CleanString = Replace(CleanString, "/", "") '... 'keep adding replacements as needed End Function 

为Worksheet_Change创build一个处理程序

 Private Sub Worksheet_Change(ByVal Target As Range) End Sub 

在处理程序中,查看Target指向的位置,并基于该逻辑应用validation逻辑。

确保忽略写回校正值时引发的Change事件:

 Private Sub Worksheet_Change(ByVal Target As Range) static self_protect as boolean if self_protect then exit sub ... self_protect = true Target.Value = "corrected value" self_protect = false ... End Sub