9

我在 Excel 2007 电子表格中有一个列,我希望将数据限制为值“COM [1-4] 或 1-65535”。如何让 Excel 强制执行这组值?

泰,弗雷德

4

4 回答 4

9

不是很灵活,但你可以使用 Custom Data Validation,这个公式:

=OR(AND(LEN(A2)=4,LEFT(A2,3)="COM",MID(A2,4,1)>="1",MID(A2,4,1)<="4"),OR(AND(A2>=1,A2<=65535)))

我认为这可以将其范围缩小到您在评论中指定的范围。

于 2013-01-16T21:22:10.427 回答
8

您将需要创建一个支持正则表达式的自定义 VBA 函数(或宏)。我亲自做过,所以我知道这是可能的:-)

如果这是一次性问题,可以通过使用复杂的FIND()/ MID()/SUBSTITUTE()等来解决(实际上这是我的日常工作),但我不建议这样做,除非你想盯着可能的 5 行单元格充满Excel功能。

编辑:如果您有或需要提供更多信息,我会更新此信息。

编辑:这是在 Excel 中使用正则表达式作为函数的方法:

Function REFIND(strValue As String, strPattern As String, Optional blnCase As Boolean = True) As Boolean

    Dim objRegEx As Object
    Dim blnValue As Boolean

    ' Create regular expression.
    Set objRegEx = CreateObject("VBScript.RegExp")
    objRegEx.Pattern = strPattern
    objRegEx.IgnoreCase = blnCase

    ' Do the search test.
    blnValue = objRegEx.Test(strValue)

    REFIND = blnValue End Function
End Function
于 2013-01-16T21:06:58.467 回答
4

在功能区 >> 数据 >> 数据验证中使用以下内容。然后 Allow = Custom 并在公式中添加以下内容:

=OR(AND(E5 >= 1, E5 <= 65535), E5 = "COM1", E5 = "COM2", E5 = "COM3", E5 = "COM4")
于 2013-01-16T21:30:40.160 回答
0

对于这个特定问题,使用标准数据验证无需 VBA、Regex 或公式即可工作:

允许:列出源:“COM1,COM2,COM3,COM4,​​1-65535”

这还在单元格中提供了一个下拉列表以帮助用户。

于 2018-01-25T00:26:33.063 回答