Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellen vergleichen & umsortieren?
#1
Hallo liebes Forum,

ich habe eine Tabelle, die ungefähr so aufgebaut ist

A  1    A 3
B  2    C 4
C  3    D 5
D 4     E 6
E  5    F 7

Die Zahlen in den Spalten B & D sind nicht relevant für die Problemstellung, aber sie sind zu beachten.
Ich möchte folgenden herausfinden.
Ist der Wert A aus Spalte A auch in Spalte C? --> ja!
Ist der Wert B aus Spalte A auch in Spalte C? --> nein!
...
..
.
Der Wert F aus Spalte C ist nicht in Spalte A !

Zielformat könnte dann soetwas sein
A  1    A 3
B  2
C  3    C 4
D  4    D 5
E 5     E 6
          F 7

ich nehme auch jedes andere sinnvolle Format.
Jemand eine Idee ? Die Datei besteht aus 6000 Zeilen, also ne Menge Holz..
Antworten Top
#2
Hallo alwiz79,

kannst du hierzu bitte eine vereinfachte und anonymisierte Beispieldatei hochladen? Macht sich leichter zum Helfen.
Momentan würde ich auf bedingte Formatierung hinweisen und "doppelte Werte" hervorheben, um die mehrfach auftretenden Werte zu identifizieren. Aber das wäre erst ein erster Schritt, da du ja noch eine Sortierung haben willst.

Grüße
Antworten Top
#3
Hallo a...,

in der Anlage einmal ein erstes Beispielmakro und hier noch einige Bemerkungen:

A) Die Werte der Spalten A und C müssen jeweils wie im Beispiel aufsteigend sortiert aber nicht eindeutig sein.

B) Da ich ungern mit festen Adressen im Programm arbeite, benötigt es zur Zeit zwei benannte Zellen (AnfListe und AnfAusgabe). Diese können beliebig in der Datei verschoben werden (auch in andere Blätter) ohne das Programm anpassen zu müssen.

C) Das Programm erwartet eine einzeilige Überschrift.
Code:
Private Sub cbTuwat_Click()
Dim lngZeileEin1 As Long
Dim lngZeileEin3 As Long
Dim lngZeileAus As Long
Dim lngZeilen As Long
Dim varListe() As Variant
Dim varAusgabe() As Variant
varListe = ThisWorkbook.Names("AnfListe").RefersToRange.CurrentRegion.Value
lngZeilen = UBound(varListe, 1)
ReDim varAusgabe(1 To 2 * lngZeilen, 1 To 4)
For lngZeileAus = 1 To 4
    varAusgabe(1, lngZeileAus) = varListe(1, lngZeileAus)
Next lngZeileAus
lngZeileEin1 = 2
lngZeileEin3 = 2
lngZeileAus = 2
Do While lngZeileEin1 <= lngZeilen Or lngZeileEin3 <= lngZeilen
    If lngZeileEin1 <= lngZeilen Then
        If lngZeileEin3 <= lngZeilen Then
            If varListe(lngZeileEin1, 1) = "" Then
                varAusgabe(lngZeileAus, 3) = varListe(lngZeileEin3, 3)
                varAusgabe(lngZeileAus, 4) = varListe(lngZeileEin3, 4)
                lngZeileAus = lngZeileAus + 1
                lngZeileEin1 = lngZeilen + 1
                lngZeileEin3 = lngZeileEin3 + 1
            Else
                If varListe(lngZeileEin3, 3) = "" Then
                    varAusgabe(lngZeileAus, 1) = varListe(lngZeileEin1, 1)
                    varAusgabe(lngZeileAus, 2) = varListe(lngZeileEin1, 2)
                    lngZeileAus = lngZeileAus + 1
                    lngZeileEin1 = lngZeileEin1 + 1
                    lngZeileEin3 = lngZeilen + 1
                ElseIf varListe(lngZeileEin3, 3) = varListe(lngZeileEin1, 1) Then
                    varAusgabe(lngZeileAus, 1) = varListe(lngZeileEin1, 1)
                    varAusgabe(lngZeileAus, 2) = varListe(lngZeileEin1, 2)
                    varAusgabe(lngZeileAus, 3) = varListe(lngZeileEin3, 3)
                    varAusgabe(lngZeileAus, 4) = varListe(lngZeileEin3, 4)
                    lngZeileAus = lngZeileAus + 1
                    lngZeileEin1 = lngZeileEin1 + 1
                    lngZeileEin3 = lngZeileEin3 + 1
                ElseIf varListe(lngZeileEin3, 3) < varListe(lngZeileEin1, 1) Then
                    varAusgabe(lngZeileAus, 3) = varListe(lngZeileEin3, 3)
                    varAusgabe(lngZeileAus, 4) = varListe(lngZeileEin3, 4)
                    lngZeileAus = lngZeileAus + 1
                    lngZeileEin3 = lngZeileEin3 + 1
                Else
                    varAusgabe(lngZeileAus, 1) = varListe(lngZeileEin1, 1)
                    varAusgabe(lngZeileAus, 2) = varListe(lngZeileEin1, 2)
                    lngZeileAus = lngZeileAus + 1
                    lngZeileEin1 = lngZeileEin1 + 1
                End If
            End If
        Else
            varAusgabe(lngZeileAus, 1) = varListe(lngZeileEin1, 1)
            varAusgabe(lngZeileAus, 2) = varListe(lngZeileEin1, 2)
            lngZeileAus = lngZeileAus + 1
            lngZeileEin1 = lngZeileEin1 + 1
        End If
    Else
        varAusgabe(lngZeileAus, 3) = varListe(lngZeileEin3, 3)
        varAusgabe(lngZeileAus, 4) = varListe(lngZeileEin3, 4)
        lngZeileAus = lngZeileAus + 1
        lngZeileEin3 = lngZeileEin3 + 1
    End If
Loop
ThisWorkbook.Names("AnfAusgabe").RefersToRange.CurrentRegion = ""
ThisWorkbook.Names("AnfAusgabe").RefersToRange.Resize(2 * lngZeilen, 4) = varAusgabe
End Sub


Angehängte Dateien
.xlsm   Zuordnen.xlsm (Größe: 21,65 KB / Downloads: 1)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4
Lieber ego!

Das ist DIE perfekte Lösung! Und rasendschnell! Mein erster Makroversuch war irgendwie superlangsam.

Bin sehr beeindruckt und sehr dankbar.

Danke!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste