Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Auswahlliste ohne doppelte Einträge
05.12.2007 13:28:00
Thomas
Hallo,
ich habe bis jetzt vergeblich versucht und gesucht, eine Lösung für folgendes Problem zu finden:
Ich möchte mittels VBA eine Auswahlliste mit Werten aus einem Zellenbereich füllen;
dabei soll die Auswahlliste keine Doppelnennungen zeigen; der Zellbereich, aus dem die Daten kommen soll dabei unverändert bleiben (also ohne Filter...); nur die Darstellung in der Auswahlliste soll keine doppelten Einträge haben.
Es wäre schön, wenn jemand eine Lösung für mein Problem hätte.
Gruß
Thomas

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 14:31:11
Peter
Hallo Thomas,
angnommen in Tabelle1 in Spalte A ab Zeile 1 stehen deine Ausgangswerte mit den doppelten und die sollen nach Tabelle2 in Spalte A ab Zeile 1 - ohne doppelte, dann so:


Option Explicit
Public Sub Ohne_Doppelte()
Dim WkSh_Q    As Worksheet
Dim WkSh_Z    As Worksheet
Dim lZeile_Q  As Long
Dim lZeile_Z  As Long
   Application.ScreenUpdating = False
   Set WkSh_Q = Worksheets("Tabelle1") ' <== Blattnamen ggf. anpassen
   Set WkSh_Z = Worksheets("Tabelle2") ' <== Blattnamen ggf. anpassen
   lZeile_Z = 1
   With WkSh_Q
      For lZeile_Q = 1 To .Cells(Rows.Count, 1).End(xlUp).Row  ' Zeilen ggf. anpassen
         With WkSh_Z
            If Application.WorksheetFunction.CountIf(.Columns(1), _
               WkSh_Q.Range("A" & lZeile_Q).Value) = 0 Then
               WkSh_Z.Range("A" & lZeile_Z).Value = WkSh_Q.Range("A" & lZeile_Q).Value
               lZeile_Z = lZeile_Z + 1
            End If
         End With
      Next lZeile_Q
   End With
   Application.ScreenUpdating = True
End Sub 


Gruß Peter

Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 14:53:28
Thomas
Hallo Peter,
vielen Dank für Deine Hilfe.
Die Prozedur läuft super gut.
Aber wie bekomme ich das jetzt mit der Auswahlliste verbunden?
Hättest Du dazu auch noch einen Tipp?
Zumal die Ergebnisliste ja in der Länge variabel ist und damit die Auswahlliste auch mal länger und mal kürzer sein müsste.
Gruß
Thomas

AW: Auswahlliste ohne doppelte Einträge
05.12.2007 14:59:00
Peter
Hallo Thomas,
bei VBA gut, sollte das doch kein Problem für dich sein.
Die Auswahl ist im Makro völlig variabel, sie kann 10 Zeilen oder 1000 Zeilen lang sein, das ist völlig egal.
Du musst doch nur die Tabellenblatt-Namen und die Spalten/Zeilen anpassen aus denen du die Daten beziehst, bzw. in die du die Daten extrahiert haben möchtest.
In den Variablen steht _q für Quelle, _Z für Ziel.
Gruß Peter

Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 15:11:00
Thomas
Hallo Peter,
danke nochmals für Deine Zeit.
Ich wollte die gefilterten Daten gleich in eine Auswahlliste übergeben.
Sie sollen nicht nochmals in einem anderen Datenblatt oder auch in dem gleichen Blatt auftauchen.
Ziel soll es sein, ein Tabellenblatt zu haben, in das die Ausgangsdaten eingetragen werden und abhänging davon verändert sich die Auswahliste auf einem anderen Tabellenblatt.
Vielleicht kannst Du Dich noch zu einem weiteren Tipp durchringen.
Die Lösung meines Problems scheint doch greifbar nah zu sein.
Gruß
Thomas

AW: Auswahlliste ohne doppelte Einträge
05.12.2007 15:20:00
Peter
Hallo Thomas,
da du den Aufbau deiner Auswahl-Liste nicht zur Verfügung gestellt hast, kann ich dir nur das bisherige Makro als Beispiel zur Verfügung stellen.
Wenn du ganze Zeilen in das andere Tabellenblatt kopieren möchtest, ist das sicherlich kein Hexenwerk, nur raten (oder hellsehen) was du wirklich möchtest, kann ich nicht.
Gruß Peter

Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 15:29:00
Thomas
Hallo Peter,
das war keine Absicht, sorry.
Es geht um Einträge, die wie folgt aussehen: W01, W02, Wxx, W01, W20,.....;
Diese Zeichenfolgen stehen in einem Tabellenblatt (Quelle) in der ersten Spalte einer Tabelle.
Und das Auswahlfeld auf einem anderen Tabellenblatt soll genau diese Zeichenfolgen, allerdings ohne die Doppelnennungen zeigen.
Ist diese Erklärung ausreichend, oder wie könne ich Dir die fehlenden Infos übermitteln?
Gruß
Thomas

AW: Auswahlliste ohne doppelte Einträge
05.12.2007 15:52:28
Peter
Hallo Thomas,
genau das macht das Makro doch!!!
Im Quellblatt wird die Spalte A ab Zeile 1 geprüft.
Alle dort vorhandenen Werte werden OHNE DOPPELTE ins Zielblatt in die Spalte A ab Zeile 1 übertragen.
Gruß Peter

Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 16:19:00
Thomas
Hallo Peter,
nicht ganz.
Ich benötige immer noch das Zielblatt (in Deinem Beispiel Tabelle2).
Aber wie komme ich ohne diese Blatt aus und wie bekomme ich gefilterten Werte in die Auswahlliste?
Das heisst, ich sehe nirgendwo die gefilterten Daten in einem Tabellenblatt. Sie würden nur in der Auswahliste (Pull-Down-Liste) erscheinen.
Sorry for confusion!
Gruß
Thomas

AW: Auswahlliste ohne doppelte Einträge
05.12.2007 16:40:48
Thomas
Vielleicht ist es wichtig noch etwas über die Auswahlliste zu scheiben.
Diese Liste erstelle ich über das Menü Daten, Gültigkeit.
Dort gibt es einen Eintrag, der den Inhalt der Liste auf einer Bereichsauswahl basieren lässt.
Wie kann ich jetzt diesen Inhalt allerdings ohne Doppelnennungen zur Auswahl bekommen.
z.B. Basistabelle enthält: a, b, c, c, d, e, f, b, h und in der Auswahlliste soll nur: a, b, c, d, e, f, h erscheinen,
Gruß
Thomas

Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 16:43:00
Peter
Hallo Thomas,
WAS IST DEINE AUSWAHLLISTE?
Ist das kein zweites Tabellenblatt?
Gruß Peter

AW: Auswahlliste ohne doppelte Einträge
05.12.2007 16:57:34
Thomas
Nein, es ist ein pull-down Objekt, was sich über den Menüpunkt Daten, Gültigkeit Liste definieren lässt.
Das ist genau das Problem.
Darüber kann man die möglichen Werte für eine Zelle vordefinieren und dann auswählen.
Gruß
Thomas

AW: Auswahlliste ohne doppelte Einträge
05.12.2007 18:01:00
Peter
Hallo Thomas,
erstelle dir anstelle Menü Daten - Gültigkeit eine ComboBox und fülle sie mit dem nachfolgenden Makro:


Option Explicit
Public Sub Ohne_Doppelte()
Dim WkSh_Q    As Worksheet
Dim lZeile_Q  As Long
Dim lZeile_Z  As Long
   Application.ScreenUpdating = False
   Set WkSh_Q = Worksheets("Tabelle1") ' <== Blattnamen ggf. anpassen
   WkSh_Q.Columns(256).ClearContents
   lZeile_Z = 1
   ComboBox1.Clear
   With WkSh_Q
      For lZeile_Q = 1 To .Cells(Rows.Count, 1).End(xlUp).Row  ' Zeilen ggf. anpassen
         If Len(WkSh_Q.Range("A" & lZeile_Q).Value) <> 0 Then
            If Application.WorksheetFunction.CountIf(.Columns(256), _
               WkSh_Q.Range("A" & lZeile_Q).Value) = 0 Then
               WkSh_Q.Range("IV" & lZeile_Z).Value = WkSh_Q.Range("A" & lZeile_Q).Value
               lZeile_Z = lZeile_Z + 1
            End If
         End If
      Next lZeile_Q
   End With
   For lZeile_Z = 1 To WkSh_Q.Cells(Rows.Count, 256).End(xlUp).Row
      ComboBox1.AddItem WkSh_Q.Range("IV" & lZeile_Z).Value
   Next lZeile_Z
   If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
   Application.ScreenUpdating = True
End Sub 


Gruß Peter

Anzeige
AW: Auswahlliste ohne doppelte Einträge
05.12.2007 19:00:00
Peter
Hallo Thomas,
so könnte es gehen, z. Zt ist das DropDown in C3, du kannst das beliebig anpassen


Public Sub Ohne_Doppelte()
Dim WkSh_Q    As Worksheet
Dim lZeile_Q  As Long
Dim lZeile_Z  As Long
   Application.ScreenUpdating = False
   Set WkSh_Q = Worksheets("Tabelle1") ' <== Blattnamen ggf. anpassen
   Columns("IV:IV").Delete Shift:=xlToLeft
   lZeile_Z = 1
   With WkSh_Q
      For lZeile_Q = 1 To .Cells(Rows.Count, 1).End(xlUp).Row  ' Zeilen ggf. anpassen
         If Len(WkSh_Q.Range("A" & lZeile_Q).Value) <> 0 Then
            If Application.WorksheetFunction.CountIf(.Columns(256), _
               WkSh_Q.Range("A" & lZeile_Q).Value) = 0 Then
               WkSh_Q.Range("IV" & lZeile_Z).Value = WkSh_Q.Range("A" & lZeile_Q).Value
               lZeile_Z = lZeile_Z + 1
            End If
         End If
      Next lZeile_Q
   End With
   Range("C3").Select          ' Zelle der Gültigkeit ggf. anpassen
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=iv1:IV" & WkSh_Q.Cells(Rows.Count, 256).End(xlUp).Row
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
   Application.ScreenUpdating = True
End Sub 


Gruß Peter

Anzeige
AW: Auswahlliste ohne doppelte Einträge
06.12.2007 08:45:00
Thomas
Hallo Peter,
ich habe es gerade mal ausprobiert.
Und....es klappt!!! Super!!
Vielen Dank für Deine Mühe und Unterstützung.
Gilt natürlich auch für alles anderen, die hier mitgeholfen haben.
Gruß
Thomas

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige