Anzeige
Archiv - Navigation
1692to1696
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
Inhaltsverzeichnis

Paare finden - keine Paare markieren

Paare finden - keine Paare markieren
22.05.2019 08:37:52
Addi
Hallo Zusammen,
ich brauche mal Eure Hilfe. Ich habe eine Datei mit über 150000 Zeilen. In der Spalte A stehen Zahlen - positive und negative (z.B. 150,23 und -150,23) usw...
Die Zeilen wo ein solches Päarchen gibt sind i.O. - ich muss die Zeilen ermitteln, in denen es nicht ein solches Päarchen gibt...
Ich hoffe Ihr versteht was ich meine...habt Ihr eine Idee wie man das mit Formeln und/oder VBA ermitteln und Kennzeichnen kann?
Vielen Dank und Gruß
Addi

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nachgefragt ...
22.05.2019 08:49:03
neopa
Hallo Addi,
... was Du genau meinst erschließt sich mir nicht wirklich. Eine Beispieldatei mit max 50 Datensätzen könnte hilfreich sein, wo Du z.B. durch Markierung aufzeigst, was Du meinst.
Eine Formellösung dürfte bei dieser Datenmenge ausscheiden. Würdest Du Dir ein (kostenfreies) AddIn von der MS-Site herunterladen und installieren? Dann könnte man eine PowerQuery-Lösung in Betracht ziehen.
Gruß Werner
.. , - ...
AW: nachgefragt ...
22.05.2019 09:01:09
Addi
Hallo Werner,
vielen Dank für die schnelle Antwort...leider bin ich für Uploads und AddIns gesperrt...
Vllt. versuche ich das nochmal zu beschreiben - ist eigentlich ganz einfach...
In Spalte A stehen nur Werte...positive und negative. Ein positver Betrag z.B. 150,23 und der passende negative Betrag -150,23 ergeben ein Päarchen. Diese Päarchen sind für die Auswertung in Ordnung.
Herausfiltern muss ich lediglich die Zellen, in denen es zu einem positiven Betrag keinen negativen gibt - oder umgekehrt. Und genau diese sollten irgendwie markiert/gekennzeichnet werden.
Hilft Dir diese Umschreibung?
Viele Grüße
Addi
Anzeige
AW: nun eindeutig; dann sieh Vorschlag Daniel owT
22.05.2019 09:08:30
neopa
Gruß Werner
.. , - ...
AW:aber nur wenn wirklich nacheinander stehend owT
22.05.2019 09:11:59
neopa
Gruß Werner
.. , - ...
AW: AW:aber nur wenn wirklich nacheinander stehend owT
22.05.2019 09:22:00
Daniel
Naja, befürchtest du, dass die Sortierfunktion von Excel nicht richtig arbeitet?
Gruß Daniel
AW: nein, evtl. ist keine Sortierung gewünscht owT
22.05.2019 09:29:43
neopa
Gruß Werner
.. , - ...
AW: nein, evtl. ist keine Sortierung gewünscht owT
22.05.2019 09:40:19
Daniel
Naja, bei dieser Datenmenge eher unwahrscheinlich
Im Zweifel führt man das ganze mit einer Kopie durch.
Aber das Problem mit meinem Lösungsvorschlag liegt woanders:
Wenn ein Zahlenwertpaar zweimal vorkommt und zuerst die beiden + und danach die beiden -Werte kommen, wird mein Weg diese als falsch kennzeichnen.
Daher besser meinen zweiten Vorschlag verwenden, da muss dann auch nicht sortiert werden.
Gruß Daniel
Anzeige
AW: Paare finden - keine Paare markieren
22.05.2019 08:59:49
Daniel
Hi
1. in einer Hilfsspalte den Absolutwert bilden: =ABS(A2)
2. die Liste nach dieser Hilfsspalte sortieren
3. in einer zweiten Hilfsppalte per Formel überprüfen, ob in der darunter- oder darüberliegenden Zelle der entsprechende Partnerwert steht, dh in C2: =Wenn(Oder(A2=-A1;A2=-A3);"Paar";"Einzelwert")

wobei hier noch eine kleine Unschärfe entstehen könnte, wenn ein Zahlenwert mehrfach vorkommt.
Gruß Daniel
AW: Paare finden - keine Paare markieren
22.05.2019 09:10:38
UweD
Hallo
evtl so?

Tabelle2
 AB
1444paarig
2444paarig
314585 
4150,15paarig
5-55 
6-444paarig
710 
8-150,15paarig
9155 
10554 
11-444paarig

verwendete Formeln
Zelle Formel Bereich N/A
B1:B11=WENN(SUMMENPRODUKT(($A$1:$A$1500=A1)*1)-SUMMENPRODUKT(($A$1:$A$1500=-A1)*1)=0;"paarig";"")  
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit


Evtl. noch fehlerhaft..
wenn z.b. von einer Ziffernfolge 2x positiv und 1x negativ existieren, dann wird KEINE paarigkeit angezeigt.
LG UweD
Anzeige
AW: es sind aber 150.000 Datensätze ...
22.05.2019 09:14:59
neopa
Hallo Uwe,
... da dürfte Deine Formel den PC ganz schön ins schwitzen bringen.
Gruß Werner
.. , - ...
AW: es sind aber 150.000 Datensätze ...
22.05.2019 09:30:19
Addi
Hallo Zusammen,
ja mein Rechner ist im Moment ganz schon am brummen...kalkulliert schon seit 10 min. und ist bei 11%...und dann auch noch mit einem nicht so wirklich eindeutigem Ergebnis...?
Gibt es per VBA nicht vllt. eine bessere - genauere Möglichkeit?
VG Addi
AW: Paare finden - keine Paare markieren
22.05.2019 09:34:36
Daniel
Noch zwei Ansätze:
Am einfachsten, aber sehr rechenintensiv und daher nur für kleinere Listen wäre diese Formel.
=Wenn(ZählenWenn(A:A;A1)=ZählenWenn(A:A;-A1);"Paar";"Fehler"

Bei deiner Datenmenge auch so
1. Überschriftenzeile einfügen, falls nicht vorhanden.
2. Hilfsspalte mit =ABS(A2)
3. Hilfsspalte mit =Vorzeichen(A2)
4. Hilfsspalten mit Überschrift versehen
5. mit der Tabelle eine Pivottabelle erstellen:
- Absolutwert nach Zeilen
- Vorzeichen nach Spalten
- Auswerten nach Anzahl
- Zwischen- und Gesamtergebniszeilen ausblenden
6. mit einer Formel neben der Pivottabelle prüfen, ob für jede Zeile das "+"- und "-"-Ergebnis gleich ist.
Gruß Daniel
Anzeige
Pivot-Auswertung geht auch einfacher
22.05.2019 09:50:38
Daniel
Hi
mit Pivot geht's auch einfacher:
1. in Hilfsspalte Absolutwert bilden
2. Pivottabelle erstellen mit
- Absolutwert nach Zeilen
- Auswerten für die Wertespalte nach Summe
wenn Paarigkeit gegeben ist, muss das Ergebnis der Summe 0 sein.
Gruß Daniel
AW: könnte unstimmig sein, wenn ...
22.05.2019 10:00:26
neopa
Hallo daniel,
... wenn es neben "Paarigkeit" den jeweils gleichen Wert nochmals positiv gibt, was bei der Datenmenge von 150.000 Datensätze keinesfalls auszuschließen ist.
Gruß Werner
.. , - ...
AW: könnte unstimmig sein, wenn ...
22.05.2019 10:35:12
Daniel
Hi
genau diesen Fall würde meine Prüfung ja als "unpaarig" ausweisen, weil es mindestens einen Wert gibt, der keinen Partner mit gegenläufigen Vorzeichen findet.
welche von den Werten jetzt das Paar bilden und welcher nicht, kann man mit den gegebenen Informationen sowieso nicht feststellen.
Gruß Daniel
Anzeige
AW: Paare finden - keine Paare markieren
22.05.2019 10:17:46
Addi
Hallo an alle...
...vielen Dank für Eure Unterstützung...die Pivot-Tabelle bringt mich auf den richtigen Weg - alles andere ist zu rechenintensiv. Um manuelle Arbeit komme ich nicht drumrum - aber ich kann wenigstens schon mal 70% der Daten aussortieren.
Vielen Dank und viele Grüße
Addi
AW: Paare finden - keine Paare markieren
22.05.2019 10:47:41
peterk
Hallo
Probier mal (Tabellen Namen anpassen, speziell für die Auswertung!)
Sub CheckP()
    Dim maxCells As Long
    Dim i As Long
    Dim objDict As Object
    Dim objDictLast As Object
    Dim DictKey As Variant

    With Worksheets("Tabelle2")    'Tabellenname anpassen 
        maxCells = .Cells(.Rows.Count, 1).End(xlUp).Row

        Set objDict = CreateObject(Class:="Scripting.Dictionary")
        Set objDictLast = CreateObject(Class:="Scripting.Dictionary")

        For i = 1 To maxCells

            If Not objDict.Exists(Key:=.Cells(i, 1).Value) Then
                objDict.Add Key:=.Cells(i, 1).Value, Item:=1
            Else
                objDict(.Cells(i, 1).Value) = objDict(.Cells(i, 1).Value) + 1
            End If

            If Not objDictLast.Exists(Key:=.Cells(i, 1).Value) Then
                objDictLast.Add Key:=.Cells(i, 1).Value, Item:=i
            Else
                objDictLast(.Cells(i, 1).Value) = i
            End If
        Next i

    End With

    For Each DictKey In objDict.keys
        If objDict.Exists(Key:=DictKey * (-1)) Then
            If objDict(DictKey * (-1)) < objDict(DictKey) Then
                objDict(DictKey) = objDict(DictKey) - objDict(DictKey * (-1))
                objDict(DictKey * (-1)) = 0
            Else
                objDict(DictKey * (-1)) = objDict(DictKey * (-1)) - objDict(DictKey)
                objDict(DictKey) = 0
            End If
        End If
    Next DictKey

    ' Auswertung (Tabellenname anpassen!) 
    i = 1
    For Each DictKey In objDict.keys
        If objDict(DictKey) <> 0 Then
            Worksheets("Tabelle2").Cells(i, 3) = DictKey              ' Wert 
            Worksheets("Tabelle2").Cells(i, 4) = objDict(DictKey)     ' Anzahl 
            Worksheets("Tabelle2").Cells(i, 5) = objDictLast(DictKey) ' lezte Zeile 
            i = i + 1
        End If
        
    Next DictKey

    Set objDict = Nothing
    Set objDictLast = Nothing

End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
ähnliches Problem
24.05.2019 12:49:10
lupo1
http://xxcl.de/0052.htm
stellt gleiche Einträge zweier Listen über VBA blitzschnell nebeneinander (0,3 Sekunden für je 32000 Einträge unter xl2000; neuere Versionen etwas langsamer, aber immer noch schnell).
Müsste etwas auf Deine Aufgabe angepasst werden, also:
Minus rechts mit Plus links vergleichen
Gleiche Beträge in einer Spalte mittels +ZEILE()%%% und ABS unterscheidbar machen, damit am Ende die Mehr-Einträge sichtbar werden

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige