2014-05-20 41 views
0

我有4個下拉菜單在Excel中讀取相同的範圍。鏈接多個下拉菜單和刪除/隱藏重複項

我已經使用了'數據驗證'中的下拉菜單。

我想刪除/隱藏已在其他下拉菜單(即其他3)中選擇的選擇。當然,如果用戶改變了他們的想法,我想讓選項/選項重新出現在每個下拉菜單中。

我曾試圖谷歌,但我沒有很多運氣。

謝謝。

回答

0

有了這個樣本:

enter image description here

名爲DataVal1(從E4:E10)的範圍驗證,使用此代碼:當你改變一個下拉的驗證

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim LstVal(1 To 10) As String 
Dim Tmp(1 To 10) 
Dim Coll As New Collection 
Dim Vali As Integer 
Dim i, x As Integer 
Dim DropLst 
Dim Dval 
Dim xx 
Dim SRange As String 

SRange = "B4:B8" 

Vali = 1 
For Each DropLst In Range(SRange) 
    Set Coll = Nothing 
    For Each Dval In Range("DataVal1") 
     Coll.Add Dval.Value 
    Next 

    For Each xx In Range(SRange) 
     If DropLst.Address = xx.Address Then GoTo ENext 
     For x = 1 To Coll.Count 
      If Coll(x) = xx.Value Then 
       Coll.Remove (x) 
       GoTo ENext 
      End If 
     Next 
ENext: 
    Next 

    Tmp(Vali) = "" 
    For i = 1 To Coll.Count 
     If (Tmp(Vali) <> "") Then Tmp(Vali) = Tmp(Vali) & "," & Coll(i) 
     If (Tmp(Vali) = "") Then Tmp(Vali) = Tmp(Vali) & Coll(i) 
    Next 

    With DropLst.Validation 
     .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:=Tmp(Vali) 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
    Vali = Vali + 1 
Next 
End Sub 

,另一個則使用新的動態列表進行驗證。
有了這段代碼,你可以添加多少驗證你想要的,改變SRange範圍...
如果你想確認單元不在附近,你需要一點點代碼...