2016-05-04 18 views
1

これも可能かどうかはわかりませんが、ドロップダウンに入力する必要があるいくつかのことを実行しようとしていますリスト、及びセルリストによる通常のセルを、別のシート上の列内の項目に基づいて選択する。私は通常の列でこれを行う方法を知っていますが、使用する列には長さが変更され、多くの重複値があります。値が第2のシートの列Bの内容に基づいて、ドロップダウンリストからだけでなく、スクロールせずに選択することができなければならないC5でこのシートにだからExcelまたはVBA - 重複のない別のシートの動的な列からドロップダウンリストを作成する

enter image description here重複します。 enter image description here

これを達成するには、VBAまたは一般的なExcelの式を使用してください。また、私はこれを非常にうまく説明しているとは思わないことを知っていますので、必要に応じてより多くの情報を私に聞かせてください。

+0

です?? –

+0

@ Garyのスチューデント私は確かです。それを行うのが最善の方法だと思いますか?あなたは私にそのようにする方法に関するいくつかのガイダンスを教えてもらえますか? – GiANTOnFire

答えて

1

ここは始まりです。私は、項目のリストがB1からB1000のいずれかのSheet2にあると仮定します。大丈夫です。範囲が部分的にしか満たされていない場合(お客様のニーズに合わせて1000を調整してください)

コードはこのリストをスキャンし、DV文字列を作成します。データの検証は、次の使用例は、シート1セルC5に適用されます:あなたは* * VBAに慣れ

Sub setupDV() 
    Dim rSource As Range, rDV As Range, r As Range, csString As String 
    Dim c As Collection 

    Set rSource = Sheets("Sheet2").Range("B1:B1000") 
    Set rDV = Sheets("Sheet1").Range("C5") 
    Set c = New Collection 
    csString = "" 
    On Error Resume Next 
    For Each r In rSource 
     v = r.Value 
     If v <> "" Then 
      c.Add v, CStr(v) 
      If Err.Number = 0 Then 
       If csString = "" Then 
        csString = v 
       Else 
        csString = csString & "," & v 
       End If 
      Else 
       Err.Number = 0 
      End If 
     End If 
    Next r 
    On Error GoTo 0 

    'MsgBox csString 

    With rDV.Validation 
     .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:=csString 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = False 
    End With 
End Sub 
+0

ありがとうございます - brill!比較的VBA初心者で、このコードを定期的に実行するにはどうすればよいですか?またはセルC5がクリックされるたびに? – GiANTOnFire

+0

申し訳ありませんが、愚かな質問!私は今、私の頭を今日に戻してやった! – GiANTOnFire

関連する問題