【问题标题】:Excel 2010 Data Validation allow specific layoutExcel 2010 数据验证允许特定布局
【发布时间】:2020-03-22 09:33:39
【问题描述】:

我想对参考数字应用数据验证,以强制使用以下布局(最好只大写):

XX_NNX-XX_NNN_NN-XXX

X = 数字

N = 字母

例如:12_AB1-23_ABC_AB-123

以下自定义公式允许除数字之外的所有内容 - 是否有任何解决方法?

我不想使用 *,因为它允许的字符比我想要的多。

=COUNTIF(A1,"??_???-??_???_??-???")

【问题讨论】:

    标签: excel validation wildcard


    【解决方案1】:

    您可以选择AND 为您已经编写的函数添加条件。例如以下将测试应为数字的位置。

    =AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0))

    注意:这是相当基本的方法,如果您遇到涉及使用小数等的情况,可能需要进行一些调整。

    编辑:您可以尝试以下方法来检查指定位置的大写文本。

    =AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),INDEX(FREQUENCY(-CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),{-91,-65,0}),2)=7)

    Edit2:这比我想象的要难。以下公式适用于单元格 A1 的 DV。

    =AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),MIN(FLOOR(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),65))=65,MAX(CEILING(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),90))=90)

    但由于一些怪癖,Excel 不允许我简单地粘贴它。所以我写了一个小代码,将DV应用于单元格A1,令人惊讶的是它通过代码接受了相同的长公式。请确保在运行此代码之前删除单元格中的 DV。

    With Range("A1")
        .Value = "12_AB1-23_ADC_AZ-123"
        .Validation.Add xlValidateCustom, , , "=AND(COUNTIF(A1,""??_???-??_???_??-???""),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),MIN(FLOOR(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),65))=65,MAX(CEILING(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),90))=90)"
    End With
    

    进入后,您只需执行copy >> Paste Special >> Validation 即可在任何其他单元格中获取它。

    为了清楚起见,我使用 Excel 2016。

    【讨论】:

    • 感谢您的快速回复!这解决了数字的问题,但允许用数字替换字母 - 我尝试使用 ISTEXT 函数,但到目前为止无济于事。
    • @Snottus 我已经发布了一个编辑。请测试一下,看看它是否对您的事业有帮助。
    • 回复有点快 - 编辑的函数与数据验证不兼容(不允许联合、交叉和范围),至少在 Excel 2010 中
    • @Snottus 你是对的!事实证明,这比我最初想象的要困难。请参阅编辑 2。这是在 Excel 2016 中检查和测试的,我希望它在 Excel 2010 中对您有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2021-09-28
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多