2017-06-06 215 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是否已經存在,或者不會再提供錯誤消息或做其他事情。 –