Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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

Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz

Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
27.12.2023 14:44:06
Annette
Hallo miteinander,

ich habe in einem anderen Forumsthread bereits die Anfrage, aber hier würde ich gerne konkreter nach einer VBA-Lösung nachfragen.
Ziel ist es, aus einem Export die jeweils neuesten Datensätze zu markieren.

Anderer Thread, bis jetzt ohne für mich mögliche Lösung: https://www.herber.de/cgi-bin/eachthread.pl?idx=1958392#1958723
Beispieldatei: https://www.herber.de/bbs/user/165488.xlsx

Es sollen verschiedene Datensätze verglichen werden und der neueste (mit den identischen Werten) entsprechend markiert.
Im angehängten Excel sind die Daten. Dieses Mal sind sie schon vorsortiert nach Spalte B, C, D, E
Aus dem Export kommen sie in anderer Reihenfolge

Es sollen verglichen werden:
edition_id, calculation, dispatch, countries --> wenn identisch, dann gebe in einer separaten Spalte den Wert "gültig" beim neuesten Datensatz an.

Wie würde das in VBA gehen?
Fasst man die 4 Merkmale als Array zusammen?
Oder sind das viele ifs, case when...?

Ich würde mich freuen wenn mir jemand helfen kann.
Diese Problemstellung werde ich noch häufiger haben in unterschiedlichen Konstellationen/Themen.

Liebe Grüße
Annette

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
27.12.2023 16:05:35
Piet
Hallo Anette

am einfachsten mit VBA, dazu der folgende Code. Überrascht wie kurz der ist??
Man kann die vier IF Then auch zu einem IF vereinen, so war es schneller zu programmieren.

mfg Piet

Sub Datensätze_markieren()

Dim i As Long, j As Long, lz1 As Long
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
Range("H2:H" & lz1).ClearContents

For j = 2 To lz1
If Cells(j, 2) = Cells(j + 1, 2) Then
For i = j To lz1
If Cells(i, 2) > Cells(i + 1, 2) Then Exit For
If Cells(i, 3) > Cells(i + 1, 3) Then Exit For
If Cells(i, 4) > Cells(i + 1, 4) Then Exit For
If Cells(i, 5) > Cells(i + 1, 5) Then Exit For
Next i
j = i
Cells(i, 8).Value = "gültig"
End If
Next j
End Sub
Anzeige
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
28.12.2023 09:27:44
Annette
Vielen Dank!
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
28.12.2023 11:52:26
Annette
Hallo Piet,
noch eine Frage hätte ich dann doch.
Wenn die Preiskonstellation nur einmal vorkommt, wird sie nicht als gültig markiert.
Wie baue ich das am Besten ein? Meinen Code habe ich hier (er ist etwas länger, einiges wäre sicher nicht nötig)

Sub Datensätze_markieren()


Dim i As Long, j As Long, lz1 As Long
Dim wrkbook As Workbook
Dim wksziel As Worksheet
Dim wkssheet As Worksheet



lz1 = Cells(Rows.Count, 1).End(xlUp).Row
Range("M2:M" & lz1).ClearContents

Set wrkbook = ThisWorkbook
Set wkssheet = wrkbook.Worksheets("export_preise_objekt_202312_k")


Set wksziel = wrkbook.Worksheets.Add
wksziel.Name = "Preise_gueltig_neu"

wkssheet.UsedRange.Copy

' wksziel.PasteSpecial Paste:=xlPasteValues

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False 'Zwischenspeicher löschen



With wksziel
.Cells.Select
.Cells.EntireColumn.AutoFit
.Range("A1").Select

End With



For j = 2 To lz1
If Cells(j, 2) = Cells(j + 1, 2) Then
For i = j To lz1
If Cells(i, 2) > Cells(i + 1, 2) Then Exit For
If Cells(i, 3) > Cells(i + 1, 3) Then Exit For
If Cells(i, 4) > Cells(i + 1, 4) Then Exit For
If Cells(i, 5) > Cells(i + 1, 5) Then Exit For
If Cells(i, 6) > Cells(i + 1, 6) Then Exit For
If Cells(i, 7) > Cells(i + 1, 7) Then Exit For
Next i
j = i
Cells(i, 13).Value = "gültig"
End If
Next j
End Sub




Anzeige
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
28.12.2023 16:13:49
Piet
Hallo Anette

probier es bitte mal so, ohne Gewähr das es klappt. Würde mich freuen wenn es klappt.

mf Piet



j = i
Cells(i, 13).Value = "gültig"
Else 'neu: Einzelwert markieren
Cells(i, 13).Value = "gültig"
End If
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
27.12.2023 16:06:50
SF
Hola,
du willst eine VBA Lösung, fragst im alten Thread aber nach der Formel für die neue Datei? Werd dir doch mal einig.
Woran deine Formel scheiterte hab ich doch auch schon geschrieben...
=WENN(F2=MAXWENNS(F:F;B:B;B2;C:C;C2;D:D;D2;E:E;E2);"gültig";"")

Die Sortierung ist übrigens völlig egal....
Gruß,
steve1da
Anzeige
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
28.12.2023 12:49:36
Annette
Hallo Steve1da,

mir sind alle Lösungen recht. In der Konstellation der Versandkosten hat Deine Formel nun geklappt.
In einer weiteren Problemstellung ergibt sie nicht das gewünschte Ergebnis.
Ich habe sie in Spalte M eingefügt nach der Logik wie bei den Versandkosten.

Ich kann den Fehler nicht finden.
Auszug der Datei samt Formel: https://www.herber.de/bbs/user/165502.xlsx

Liebe Grüße
AW: Mit VBA lösen? Mehrere Werte vergleichen, neusten Datensatz
28.12.2023 19:49:29
SF
Wenn in Spalte F nirgendwo etwas drin steht, kann dort auch nichts verglichen werden.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige