Microsoft Excel

Herbers Excel/VBA-Archiv

Spalteninhalte ohne doppelte in neue Spalte | Herbers Excel-Forum


Betrifft: Spalteninhalte ohne doppelte in neue Spalte von: Jean-Pierre
Geschrieben am: 24.11.2011 21:37:09

Hallo zusammen,

ich möchte gerne aus Spalte B (beginnend B2) alle Inhalte exklusive der doppelten in Spalte C (beginnend C2 nach unten) aufgeführt haben.

Ich habe diesen Code hier gefunden https://www.herber.de/forum/archiv/1232to1236/t1232278.htm
von Josef Ehrensberger der gefällt mir soweit ganz gut aber ist halt nicht auf meine Situation angepasst.

Ich bin leider nicht so erfahren was VBA betrifft, hab da noch keine Lektüre gefunden die es Neulingen wie mir verständlich macht :)

Könnte mir da vielleicht jemand behilflich sein und den Code anpassen das eben alles aus B kopiert wird und ohne doppelte in C eingefügt wird?

Ich bedanke mich schon mal jetzt für's drüber schauen.

Gruß aus dem Frankenland
Jean-Pierre

  

Betrifft: AW: Spalteninhalte ohne doppelte in neue Spalte von: firmus
Geschrieben am: 24.11.2011 21:58:10

Hallo Jean-Pierre,
mit VBA=nein würde ich jetzt auch nicht damit anfangen. Übe erst mal mit Tutorials.
Zu Deinem Problem.
1. sortiere nach Spalte B
2. setze in Spalte C, beginnend mit C2 die formel: =wenn(b2=b1;c2=c1+1;1)
(die werte in spalte B werden für jeden Wert numeriert.)
3. Filtere die Spalte C auf den Wert "1".
(Damit bekommst Du pro Wert in Spalte B einen eindeutigen Wert
4. Kopiere diese gefilterten Werte

Falls Du in die gleiche Tabelle kopierst stimmt die logische Struktur nicht mehr.
(Was sollen die Spalten und Zeilen jeweils darstellen? - dann wären 2 logische Überlegungen in einem
Blatt - immer schlecht für xls-logische Verarbeitung.

Viel Erfolg,

Gruß aus Schwaben,
Firmus


  

Betrifft: AW: Spalteninhalte ohne doppelte in neue Spalte von: Jean-Pierre
Geschrieben am: 24.11.2011 22:20:54

@ Firmus
ich möchte das schon gerne mit VBA lösen und anhand von meinen Beispielen auch lernen bzw. verstehen aber ich danke Dir für Deine Rücksichtnahme - nicht selbstverständlich in unserer Welt :)


  

Betrifft: Werte ohne Redundanzen in neue Spalte kopieren von: NoNet
Geschrieben am: 24.11.2011 22:04:02

Hallo Jean-Pierre,

SeppsCode kopiert nicht, sondern löscht die redundanten Zellen, daher ist er für Dein anliegen wohl nicht ganz geeignet.

Hier mein Codevorschlag : Es werden alle Zellen der Spalte B überprüft. Wenn der Wert der aktuellen Zelle aus Spalte B noch nicht in Spalte C vorhanden ist (überprüft mit ZÄHLENWENN() - bzw. VBA-Anweisung : Application.CountIf()), dann wird der Wert in die nächste freie Zelle der Spalte C eingetragen.

Sub Werte_ohne_Redundanzen_Kopieren()
    'Kopiert alle Werte der Spalte B EINMALIG nach Spalte C - ohne Redundanzen
    '24.11.2011, NoNet - www.excelei.de
    
    Dim lngZQ As Long, lngZZ As Long 'Zeilen-Variablen für Quelle/Ziel
    Dim lngSQ As Long, lngSZ As Long 'Spalten-Variablen für Quelle/Ziel
    
    lngSQ = 2 'Werte aus Quell-Spalte 2 = Spalte B
    lngSZ = 3 'Werte nach Ziel-Spalte 3 = Spalte C
    
    Columns(lngSZ).ClearContents 'Zielspalte zuvor löschen !
    
    For lngZQ = 2 To Cells(Rows.Count, lngSQ).End(xlUp).Row
        'Per ZÄHLENWENN() prüfen, ob Wert bereits in ZIEL-Spalte vorhanden ist :
        If Application.CountIf(Columns(lngSZ), Cells(lngZQ, lngSQ)) = 0 Then
            'Wenn der Wert noch NICHT in der ZIEL-Spalte vorhanden ist :
            lngZZ = Cells(Rows.Count, lngSZ).End(xlUp).Row + 1
            Cells(lngZZ, lngSZ) = Cells(lngZQ, lngSQ)
        End If
    Next
End Sub
Gruß, NoNet


  

Betrifft: Alternative ohne VBA: Spezialfilter ohne Duplikate von: NoNet
Geschrieben am: 24.11.2011 22:07:17

Hallo Jean-Pierre,

wenn Du das evtl. auch ohne VBA lösen möchtest, dann empfehle ich dir den "Spezialfilter ohne Duplikate" - bei "Excel gut" gehe ich davon aus, dass Du diesen kennst !?!?

Gruß, NoNet


  

Betrifft: AW: Alternative ohne VBA: Spezialfilter ohne Duplikate von: Jean-Pierre
Geschrieben am: 24.11.2011 22:21:41

@ NoNet
Danke, den Code werde ich ausprobieren, muss ich den in ein Modul einbinden?
Und den Sortieren Filter kenne ich natürlich möchte das nur gerne automatisch gemacht haben, da ich in einem Tab Daten reinkopiere und der rest von selbst abgearbeitet wird.
Dieses Excelsheet ist im grunde ein Tool was aus "unreinem" Text einen importfähigen "sauberen" Text macht.

Gruß Jean-Pierre


  

Betrifft: Sortieren-Filter ? - Was ist das denn ? ;-)) von: NoNet
Geschrieben am: 24.11.2011 22:33:15

Hallo J.P.,

Und den Sortieren Filter kenne ich natürlich 

Da kennst Du mehr als ich, denn den Sortieren-Filter habe ich nie erwähnt... ;-))

Zu Deiner Frage : Ja, der gesamte Code gehört in ein allgemeines Modul im VBA-Editor :
- Kopiere den gesamten Code von SUB... bis End Sub
- Wechsle mit Alt+F11 in den VBA-Editor
- wähle im Menü "Einfügen - Modul"
- füge den zuvor kopierten Code in das Modulfenster auf der rechten Seite ein

Den VBA-Editor kannst Du nun wieder schließen. Wenn Du die Mappe speicherst (XLS bis Excel 2003 oder XLSM ab Excel 2007), wird der VBA-Code mitgespeichert.
Den Code kannst Du im VBA-Editor per F5 ausführen oder aus dem Tabellenblatt per Alt+F8 (bzw. Menü "Extras - Makros - Makro").

Gruß, NoNet


  

Betrifft: AW: Sortieren-Filter ? - Was ist das denn ? ;-)) von: Jean-Pierre
Geschrieben am: 24.11.2011 22:45:13

Hehe...Filter dann Spezialfilter war von mir gemeint :)

Danke - Gestestet und funktioniert hervorragend!
Vielen Dank :)

Gruß Jean-Pierre


  

Betrifft: AW: Sortieren-Filter ? - Was ist das denn ? ;-)) von: Jean-Pierre
Geschrieben am: 24.11.2011 23:17:46

Habe noch eine Frage NoNet,

wie/wo füge ich diesen Code ein das ich in einem anderen Tabellenblatt diesen mittels Button ausführen kann?

Habe bis jetzt eine Befehlsschaltfläche in Tab 1 erstellt (Die Sortierung Dank Deinem Code findet in einem anderen Tab statt.
Unter Code habe ich diesen eingefügt, jedoch erfolgt bei Klick auf Button das Einfügen exkl. doppelter nicht.

Ich vermute, es liegt daran das in dem Code der eindeutige Verweis zu dem Tab fehlt oder?

Gruß Jean-Pierre


  

Betrifft: Code in anderem Tabellenblatt ausführen von: NoNet
Geschrieben am: 25.11.2011 00:38:17

Hallo J.P.,

Du hast mit Deiner Vermutung Recht, dass der "Verweis" zum anderen Tabellenblatt angegeben werden muss, falls das Makro nicht im aktuellen Blatt ausgeführt werden soll.

Das macht man in VBA mit dem Konstrukt :

 'Tabelle2 ist das Blatt, auf dem die Aktionen durchgeführt werden sollen
With Sheets("Tabelle2")
'...hier der Code
End With

Die Zell-/Bereichsangaben, die sich auf dieses Blatt beziehen müssen dann zur Kennzeichnung mit einem vorangestellten Punkt . beginnen :
Also z.B. .Cells(...,....) anstatt nur Cells(...,....)

Genauer gesagt ist das eine Kurzschreibweise für die exakte Objektbezeichnung Sheets("Tabelle2").Cells(...,....)

Schau dir doch mal das angehängte Beispiel an : Button in "Tabelle1", Daten in "Tabelle2" :

https://www.herber.de/bbs/user/77661.xls

Gruß und gute Nacht, NoNet


Beiträge aus den Excel-Beispielen zum Thema "Spalteninhalte ohne doppelte in neue Spalte"