Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum mit Array vergleichen

Forumthread: Datum mit Array vergleichen

Datum mit Array vergleichen
31.01.2017 11:30:45
Anton
Guten Morgen Zusammen,
mit folgendem Code würde ich gerne das Datum in wksParams.cells(31,4).value (formatiert als Datum) mit dem Datum im arr() Spalte 1 vergleichen. Wenn das Datum im Array Spalte 1 größer ist soll in Array Spalte 2 bei der entsprechenden Position "OK" geschrieben werden. Nun bekomme ich immer einen Typenkonflikt.
Kann mir evtl. wer weiterhelfen?
Sub Arrays()
Dim arr() As Variant
Dim i As Long
Dim wksBlatt As Worksheet
Dim wksParamas As Worksheet
Set wksBlatt = ThisWorkbook.Worksheets("Zeitraum")
Set wksParams = ThisWorkbook.Worksheets("Parameter")
With wksBlatt
arr = .Range("A3:G369")
For i = LBound(arr) To UBound(arr)
If CLng(arr(i, 1)) >= CLng(wksParams.Cells(31, 4).Value) Then
arr(i,2) = "OK"
End If
Next i
End With
End Sub
Hier eine Beispielmappe:
https://www.herber.de/bbs/user/111026.xlsx
Danke & VG
Anton
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum mit Array vergleichen
31.01.2017 12:34:21
ChrisL
Hi Anton
Wenn du im Debug-Modus über "arr" in der Codezeile fährst (Roll-Over), dann siehst du den Wert (Text "Datum") was mit eine Typ Long (CLng) unverträglich ist.
Fazit: dein Bereich beginnt in A3 anstatt A4.
cu
Chris
AW: Datum mit Array vergleichen
31.01.2017 12:37:08
Rudi
Hallo,
in A3 steht "Datum"
arr = .Range("A4:G369")
Gruß
Rudi
Anzeige
AW: Datum mit Array vergleichen
31.01.2017 12:55:47
Anton
Vielen Dank euch beiden! Debug Mode beim MAC ist ziemlich abgespeckt.
VG Anton
;
Anzeige
Anzeige

Infobox / Tutorial

Datum mit Array vergleichen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei mit den relevanten Daten in den entsprechenden Blättern ("Zeitraum" und "Parameter").

  2. Öffne den VBA-Editor durch Drücken von ALT + F11.

  3. Füge den folgenden Code in ein neues Modul ein:

    Sub Arrays()
       Dim arr() As Variant
       Dim i As Long
       Dim wksBlatt As Worksheet
       Dim wksParams As Worksheet
    
       Set wksBlatt = ThisWorkbook.Worksheets("Zeitraum")
       Set wksParams = ThisWorkbook.Worksheets("Parameter")
    
       With wksBlatt
           arr = .Range("A4:G369") ' Achte darauf, die richtige Zeile zu wählen
           For i = LBound(arr) To UBound(arr)
               If CLng(arr(i, 1)) >= CLng(wksParams.Cells(31, 4).Value) Then
                   arr(i, 2) = "OK"
               End If
           Next i
       End With
    End Sub
  4. Starte das Makro, um die Daten in der zweiten Spalte des Arrays zu aktualisieren, wenn das Datum in der ersten Spalte größer oder gleich dem Datum in wksParams.Cells(31, 4) ist.


Häufige Fehler und Lösungen

  • Typenkonflikt:

    • Wenn du einen Typenkonflikt erhältst, überprüfe, ob die Daten in der ersten Spalte des Arrays tatsächlich als Datum formatiert sind. Oft wird der Fehler durch Textwerte verursacht. Achte darauf, dass die erste Zeile (A3) in deinem Bereich nicht "Datum" ist, sondern ab A4 beginnt.
  • Falscher Zellbereich:

    • Stelle sicher, dass du den richtigen Zellbereich im Code angibst. Der Bereich sollte wie folgt lauten: arr = .Range("A4:G369").

Alternative Methoden

Eine alternative Methode zum Vergleich von Datumswerten in Excel besteht darin, die Funktion WENN zu verwenden. Du kannst die Formel direkt in einer Zelle anwenden:

=WENN(A4 >= $D$31; "OK"; "")

Diese Methode ist besonders nützlich, wenn du keine VBA-Makros verwenden möchtest und eine einfache Überprüfung in den Excel-Zellen durchführen willst.


Praktische Beispiele

Angenommen, du hast folgende Daten in deiner Tabelle:

A (Datum) B (Status)
01.01.2023
05.01.2023
10.01.2023

Wenn wksParams.Cells(31, 4) den Wert 03.01.2023 hat, wird die zweite Spalte nach dem Ausführen des Codes wie folgt aussehen:

A (Datum) B (Status)
01.01.2023
05.01.2023 OK
10.01.2023 OK

Tipps für Profis

  • Debugging: Nutze den Debug-Modus in VBA, um Schritt für Schritt durch deinen Code zu gehen. So kannst du leicht Probleme identifizieren und beheben.
  • Datenvalidierung: Stelle sicher, dass die Daten in der ersten Spalte korrekt formatiert sind, bevor du den Vergleich durchführst. Das vermeidet viele häufige Fehler.
  • Variablen anpassen: Überlege, ob du die Variablen und Zellreferenzen dynamisch gestalten kannst, um den Code flexibler zu machen.

FAQ: Häufige Fragen

1. Was ist ein Typenkonflikt und wie kann ich ihn vermeiden?
Ein Typenkonflikt tritt auf, wenn du versuchst, Daten unterschiedlicher Typen zu vergleichen. Um dies zu vermeiden, stelle sicher, dass alle Daten im richtigen Format (z.B. Datum) vorliegen.

2. Kann ich auch andere Datenformate vergleichen?
Ja, du kannst auch andere Datenformate vergleichen, aber du musst sicherstellen, dass die entsprechenden Umwandlungen (z.B. CLng, CStr) angewendet werden, um Typenkonflikte zu vermeiden.

3. Welche Excel-Version wird benötigt?
Die obigen Anleitungen sind für Excel-Versionen ab 2010 gültig, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige