Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1532to1536
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

2 Spalten vergleichen und mit wenn dann

2 Spalten vergleichen und mit wenn dann
14.01.2017 20:51:54
Ralph
Hallo Zusammen
Leider kenne ich mich mit VBA noch zu wenig aus und wende mich darum an euch.
Ich habe folgende Aufgabe:
Spalte A mit Spalte B vergleichen. Bei beiden stehen Datums drin. Wenn das Datum in Spalte A Jünger ist als in Spalte B, dann wird das Datum aus der Spalte A in Spalte B geschrieben. Umgekehrt bleibt es so wie es ist. Besten Dank für eure Hilfe.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
14.01.2017 21:11:48
Werner
Hallo Ralph,
meinst du so?
Public Sub aaa()
Dim rngBereich As Range
Dim rngZelle As Range
Dim loLetzte As Long
With Worksheets("Tabelle1") 'anpassen
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte belegte in Spalte A
Set rngBereich = .Range(.Cells(1, 1), .Cells(loLetzte, 1))
For Each rngZelle In rngBereich
If CDate(rngZelle.Value) 
Code gehört in ein allgemeines Modul.
Gruß Werner
AW: 2 Spalten vergleichen und mit wenn dann
14.01.2017 21:15:41
Werner
Hallo Ralph,
sehe gerade, dass ich die Prüfung auf jüngeres Datum genau falsch herum habe. Bitte diese Codezeile
If CDate(rngZelle.Value) 

durch diese ersetzen
If CDate(rngZelle.Value) > CDate(rngZelle.Offset(, 1).Value) Then
Gruß Werner
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 08:21:04
Ralph
Hallo Werner
Besten Dank für die schnelle Antwort. Funktioniert dies auch wenn die Datum erst in der 2. Zeile Anfangen?
Besten Dank
Gruss Ralph
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 10:23:35
Werner
Hallo Ralph,
dann ersetze die Codezeile
rngBereich = .Range(.Cells(1, 1), .Cells(loLetzte, 1))

durch diese
rngBereich = .Range(.Cells(2, 1), .Cells(loLetzte, 1))
Gruß Werner
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 12:55:38
Ralph
Hoi Werner
Ich bringe es irgendwie nicht hin. Ich habe Dir die Datei raufgespielt. Bitte vertraulich behandeln den es sind Geschäftsdaten drauf. Danke
Es geht um die Spalten J und M. Wenn J Jünger ist als M muss J in die Spalte M geschrieben werden.
Danke nochmals
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 13:51:00
Werner
Hallo Ralph,
da ist keine Datei dabei. Versuch mal:
Public Sub aaa()
Dim rngBereich As Range
Dim rngZelle As Range
Dim loLetzte As Long
With Worksheets("Tabelle1") 'anpassen
loLetzte = .Cells(.Rows.Count, 10).End(xlUp).Row 'letzte belegte in Spalte J
Set rngBereich = .Range(.Cells(2, 10), .Cells(loLetzte, 10))
For Each rngZelle In rngBereich
If CDate(rngZelle.Value) > CDate(rngZelle.Offset(, 3).Value) Then
rngZelle.Offset(, 3).Value = rngZelle.Value
End If
Next rngZelle
End With
End Sub
PS: Wenn da vertrauliche Daten drin sind, dann solltest du die Datei hier nicht hochladen, die kann sich ja jeder im Forum ansehen. Wenn dann vorher die Daten anonymisieren. Es reichen ja ein paar vorhandene Datensätze zum Testen. Allerdings sollte die Datei in ihrer Struktur deinem Original entsprechen.
Gruß Werner
Gruß Werner
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 14:04:03
Ralph
Hoi Werner
Dies brauch ich jetzt nicht mehr zu machen. Das Makro funktioniert. Wäre es auch möglich, wenn die Spalte M leer ist und J nicht, das Datum auch übernommen wird?
Danke
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 14:22:32
Werner
Hallo Ralph,
Public Sub aaa()
Dim rngBereich As Range
Dim rngZelle As Range
Dim loLetzte As Long
With Worksheets("Tabelle1") 'anpassen
loLetzte = .Cells(.Rows.Count, 10).End(xlUp).Row 'letzte belegte in Spalte J
Set rngBereich = .Range(.Cells(2, 10), .Cells(loLetzte, 10))
For Each rngZelle In rngBereich
If CDate(rngZelle.Value) > CDate(rngZelle.Offset(, 3).Value) _
Or rngZelle.Offset(, 3) = "" Then
rngZelle.Offset(, 3).Value = rngZelle.Value
End If
Next rngZelle
End With
End Sub
Gruß Werner
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
15.01.2017 20:02:56
Ralph
Hoi Werner
Besten Dank. Dies funktioniert soweit. Ich habe in der Spalte J eine Formel drin (SVERWEIS) und wenn es kein Text für den SVERWEIS hat gibt es mir kein Datum in der Spalte J. Das Makro hat damit Mühe. Wie kann ich dies umgehen?
Gruss Ralph
AW: 2 Spalten vergleichen und mit wenn dann
16.01.2017 09:48:41
Werner
Hallo Ralph,
ein kleiner Tip am Rande:
Das ganze gestaltet sich ziemlich zäh, da alles immer nur tröpfchenweise kommt.
Erst ging es um Spalte A und B, das Makro dafür bekommst du nicht umgesetzt weil es sich tatsächlich um die Spalten J und M handelt - warum hast du das nicht gleich geschrieben?
Dann sollen auch leere Zellen in Spalte M entsprechend berücksichtigt werden. Auch dafür bekommst du das Makro, allerdings stellt sich jetzt heraus, dass die Zellen in Spalte M mitnichten leer sind, weil nämlich Formeln drin stehen.
Deshalb am besten so beschreiben, wie es tatsächlich ist. Noch besser eine Musterdatei hochladen.
Versuch:
Public Sub aaa()
Dim rngBereich As Range
Dim rngZelle As Range
Dim loLetzte As Long
With Worksheets("Tabelle1") 'anpassen
loLetzte = .Cells(.Rows.Count, 10).End(xlUp).Row 'letzte belegte in Spalte J
Set rngBereich = .Range(.Cells(2, 10), .Cells(loLetzte, 10))
For Each rngZelle In rngBereich
If rngZelle.Offset(, 3).Value = "" Then
rngZelle.Offset(, 3).Value = CDate(rngZelle.Value)
ElseIf IsDate(rngZelle.Offset(, 3).Value) Then
If CDate(rngZelle.Value) > CDate(rngZelle.Offset(, 3).Value) Then
rngZelle.Offset(, 3).Value = rngZelle.Value
End If
End If
Next rngZelle
End With
End Sub
Gruß Werner
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
16.01.2017 12:59:52
Ralph
Hallo Werner
Du hast vollkommen recht, sorry für die Umstände. Ich probiere nochmals ein File hochzuladen. Leider funktioniert irgend etwas nicht ganz.
https://www.herber.de/bbs/user/110603.xlsm
MFG
Ralph
AW: 2 Spalten vergleichen und mit wenn dann
16.01.2017 13:51:20
Werner
Hallo Ralph,
versuchs mal damit:
Public Sub aaa()
Dim rngBereich As Range
Dim rngZelle As Range
Dim loLetzte As Long
With Worksheets("Übersicht letzter Besuch")
loLetzte = .Cells(.Rows.Count, 10).End(xlUp).Row
Set rngBereich = .Range(.Cells(2, 10), .Cells(loLetzte, 10))
For Each rngZelle In rngBereich
If rngZelle.Value  "" Then
If rngZelle.Offset(, 3).Value = "" Then
rngZelle.Offset(, 3).Value = CDate(rngZelle.Value)
ElseIf IsDate(rngZelle.Offset(, 3).Value) Then
If CDate(rngZelle.Value) > CDate(rngZelle.Offset(, 3).Value) Then
rngZelle.Offset(, 3).Value = rngZelle.Value
End If
End If
End If
Next rngZelle
End With
End Sub
Mit der Datei, die du mir hier hochgeladen hast, lässt sich nicht richtig testen. Ich gehe mal davon aus, dass die Eitragungen auf dem Blatt "Übersicht letzter Besuch" in den Zellen A2 und A3 normalerweise eindeutige Bezeichnungen sind und bei der hochgeladenen Datei der Anonymisierung zum Opfer gefallen sind. Deine SVERWEIS-Formel funktioniert nämlich nur, wenn die Suchbegriffe aus A2 und A3 im Blatt "Hauptdaten" in Spalte B nicht mehrfach vorkommen. Aber das solltest du bei Excel gut ja wissen.
Gruß Werner
Anzeige
AW: 2 Spalten vergleichen und mit wenn dann
16.01.2017 14:01:37
Ralph
Hallo Werner
Dies ist richtig. Herzlichen Dank. Jetzt klappt es perfekt und ich kann loslegen.
MFG
Ralph
PS: Dein Einsatz war Sensationell.
Danke für die Rückmeldung.... aber
16.01.2017 15:14:33
Werner
Hallo Ralph,
... was ich jetzt gerade gesehen habe: Du hast auch auf VBA-Forum.de das gleiche Problem eingestellt. Crossposting wird hier im Forum vom Forenbetreiber nicht gerne gesehen und ich persönlich halte auch nichts davon. Du wirst sicher auch keine zwei Mechaniker mit der Reparatur deines Autos beauftragen. Aber da musst du auch dafür bezahlen und hier nicht. Wenn ich das vorher gesehen hätte, wäre ich wahrscheinlich gar nicht eingestiegen.
Dort hat sich auch schon jemand damit befasst, ohne dass du darauf reagiert hast. Entweder meine oder seine Arbeit ist jetzt für den Papierkorb.
Ich denke dort ist es höchste Zeit, dass du reagierst und mitteilen, dass das Problem gelöst ist.
Gruß Werner
Anzeige

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige