Anzeige
Archiv - Navigation
1708to1712
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

Zahlenpaare markieren und löschen - Frage an Fenne

Zahlenpaare markieren und löschen - Frage an Fenne
25.08.2019 10:56:32
Stephan

Hallo Fennek,
du hattest folgenden Lösungsvorschlag für mein Problem. Nun meine Frage, ob man das noch erweitern kann. Ich würde gerne prüfen, ob in Spalte 3 und 6 auch identische Werte stehen.
Bspw. Steht in 3 ein Land und in sechs eine Artikelnummer. Nur, wenn Land, Artikelnummer und der Wert übereinstimmen, soll das X gesetzt werden. Mit diesem Makro würde ich nämlich Stornos makieren.
Deswegen hast du eine Buchung mit positiven Wert und eine mit negativem. Ich freue mich auf deine Rückmeldung.
Grüße
Stephan
Sub T_1()
'Daten in Spalte 8
'Spalte 10 frei für das Ergebnis
Ar = Columns(8).SpecialCells(2) ' 8 ist die Spalte
For i = 1 To UBound(Ar) - 1
If IsNumeric(Ar(i, 1)) Then
Z = Ar(i, 1)
For j = i + 1 To UBound(Ar)
If IsNumeric(Ar(j, 1)) Then
If Z = -1 * Ar(j, 1) Then
Ar(i, 1) = "X": Ar(j, 1) = "X"
Bo = True
Exit For
End If
End If
Next j
Bo = False
End If
Next i
Cells(1, 10).Resize(UBound(Ar)) = Ar '10 ist die Spalte
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenpaare markieren und löschen
26.08.2019 08:38:28
Stephan
Hallo Zusammen,
Fennek hatte untenstehenden Makro programmiert, der wunderbar funktioniert. Er scheint momentan offline zu sein. Da ich das Makro erweitert benötige, wende ich mich an euch.
Ich würde gerne prüfen, ob in Spalte 3 und 6 auch identische Werte stehen.
Bspw. Steht in 3 ein Land und in sechs eine Artikelnummer. Nur, wenn Land, Artikelnummer und der Wert übereinstimmen, soll das X gesetzt werden. Mit diesem Makro würde ich nämlich Stornos markieren.
Deswegen hast du eine Buchung mit positivem Wert und eine mit negativem. Ich freue mich auf Rückmeldung.
Grüße
Stephan
Sub T_1()
'Daten in Spalte 8
'Spalte 10 frei für das Ergebnis
Ar = Columns(8).SpecialCells(2) ' 8 ist die Spalte
For i = 1 To UBound(Ar) - 1
If IsNumeric(Ar(i, 1)) Then
Z = Ar(i, 1)
For j = i + 1 To UBound(Ar)
If IsNumeric(Ar(j, 1)) Then
If Z = -1 * Ar(j, 1) Then
Ar(i, 1) = "X": Ar(j, 1) = "X"
Bo = True
Exit For
End If
End If
Next j
Bo = False
End If
Next i
Cells(1, 10).Resize(UBound(Ar)) = Ar '10 ist die Spalte
End Sub

Anzeige
AW: Beispieldatei
26.08.2019 13:40:32
Fennek
Hallo,
lade bitte erneut die Beispieldatei hoch, ich kann die von damals nicht finden.
Solche Nachfragen sehe ich etwas kritisch, ich bin kein Dienstleister, sondern picke mir - in diesem Moment - interessante Fragen heraus.
mfg
AW: Beispieldatei
28.08.2019 15:39:15
Stephan
Hallo Fennek,
habe ein Beispiel hochgeladen. Matthias war so nett und hat bereits einen Code geschrieben. Mir ist schon klar, dass du kein Dienstleister bist. Der Makro hat mir aber bereits sehr geholfen. Vielen Dank nochmal.
Grüße
Stephan
AW: Zahlenpaare markieren und löschen
27.08.2019 08:48:23
Matthias
Moin!
Hier mal ein Versuch an Hand des alten COdes und der Beschreibung. WIe Fennek geschrieben hatte, wäre es mit Datei natürlich besser. Habe den alten Code größtenteils gelassen und nur ein wenig angepasst. DA ich nicht wußte, wo bzw. aus welchem Blatt der Code läuft, dass am anfang ggf. anpassen. Und den Schleifenabbruch unten habe ich mal auskommentiert - falls der Wert nochmal auftritt. Geprüft wird jetzt nach Spalte 8 (im Array mit INdex 6). Wenn die dem negativen Wert entspricht, wird noch Spalte C (index wäre dabei 1 ) und Spalte G (Index dabei 4) auf Gleichheit gerüft.
Sub T_1()
'Daten in Spalte 8
'Spalte 10 frei für das ErgebnisDim ende As Long
Dim ziel(), quelle()
Dim blatt
Set blatt = ActiveSheet 'ggf. auf das richtige Blatt referenzierne
ende = blatt.Cells(blatt.Rows.Count, 8).End(xlUp).Row
ReDim ziel(1 To ende, 1 To 1)
quelle = blatt.Cells(1, 3).Resize(ende, 6).Value
For i = 1 To ende
If IsNumeric(quelle(i, 6)) Then
Z = quelle(i, 6)
For j = i + 1 To ende
If IsNumeric(quelle(j, 6)) Then
If Z = -1 * quelle(j, 6) And quelle(j, 1) = quelle(i, 1) And quelle(j, 4) =  _
quelle(i, 4) Then
ziel(i, 1) = "X": ziel(j, 1) = "X"
Bo = True
'Exit For  falls nochmal der Wert kommt
End If
End If
Next j
Bo = False
End If
Next i
Cells(1, 10).Resize(ende) = ziel '10 ist die Spalte
End Sub

VG
Anzeige
AW: Zahlenpaare markieren und löschen
28.08.2019 15:37:20
Stephan
Hallo Matthias,
danke. Ich habe mal eine Beispieldatei hochgeladen. Der Code funktioniert. Lediglich, wenn drei identische Werte vorhanden sind, werden alle drei markiert (siehe Beispiel Zeile 2, 5 und 6).
https://www.herber.de/bbs/user/131691.xlsm
Grüße
Stephan
AW: Zahlenpaare markieren und löschen
28.08.2019 20:58:20
Matthias
Moin!
Das habe ich extra so gemacht. Ist aber kein Problem. Nimm in der Zeile mit den
'exit for
den Anstrich und den Text dahinter raus. Dann wird nach dem ersten Treffer die Schleife abgebrochen und der/die nächse(n) Treffer wird nicht mehr markiert.
Du müsstest dir aber Gedanken machen, was passieren soll, wenn in der Tabelle nochmal der WErt mit plus 12 auftaucht. Dann würde der mit dem Wert in Zeile 6 ja ein Paar bilden oder? ISt das dann auch ein "X" oder nicht?
VG
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige