2017-06-06 214 views
0

我正在编译一个公司的数据库和相应的3个字母的首字母缩略词。我有这个宏,当一个新公司被添加到数据库时,它会自动生成一个首字母缩略词。如何在Excel中对执行宏的函数执行数据验证?

Function Abbv(pWorkRng As Range) As String 
    Dim arr As Variant 
    Dim xValue As String 
    Dim output As String 

    xValue = pWorkRng.Value 
    arr = VBA.Split(Trim(xValue)) 

    For i = 0 To UBound(arr) 
     output = output & VBA.Left(arr(i), 1) & "" 
    Next 

    output = Left(output, 3) 
    Abbv = output 
End Function 

我试图强制执行数据验证对输入重复的条目,使得任何新生成的首字母缩写词是不一样的任何现有的首字母缩写词(上关的机会,一个新加入公司的英文缩写与数据库中已有的首字母缩写相同)。

这是公式我有防止重复条目,但它仍然允许自动生成的首字母缩写词是重复的。

=COUNTIF($D$1:$D$200,D1)=1 

我如何获得这个重复条目的警告,以防止任何自动生成首字母缩写词被重复?

回答

0

看一看的WorksheetFunction.CountIf方法

Application.WorksheetFunction.CountIf(Arg1, Arg2) 

哪里..​​.

  • Arg1是要算细胞像Worksheets("Sheet1").Range("$D$1:$D$200")
  • Arg细胞的范围是条件数字,表达式,单元格引用或定义哪些单元格将被计数的文本的形式:例如,你的Abbv
+0

所以我将其写入数据验证公式,我仍然有同样的问题。我手动输入的任何内容都会触发重复条目警告,并且允许任何自动生成的首字母缩写词共享以前存在的名称 –

+0

@ A.Shetty不,它不是用于Excel的数据验证,它是为了使用上面的代码在您的Abbv生成函数中检查新生成的Abbv是否已经存在,或者不会再提供错误消息或做其他事情。 –