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

Code um 2 Tabellen miteinander zu vergleichen

Code um 2 Tabellen miteinander zu vergleichen
10.04.2018 15:18:50
Maik
Liebe Community,
ich möchte euch erst einmal mein Anliegen schildern:
Ich suche einen VBA-Code um 2 Tabellen mit einander zu vergleichen. In der ersten Tabelle im Worksheet Planung sind die SOLL-Zeiten eingetragen, also die Stunden die benötigt werden, um etwas herzustellen. In der zweiten Tabelle im Worksheet Arbeitszeiten sind die IST-Zeiten eingetragen, also die Stunden die zur Verfügung stehen. Der Aufbau der beiden Tabellen ist identisch.
In der ersten Zeile der jeweiligen Tabelle befinden sich Datumsangaben. In den Zeilen darunter die Arbeitsstunden (einmal SOLL und in der anderen Tabelle IST).
Wie müsste der VBA-Code aussehen, wenn ich die SOLL-Zeit-Tabelle mit der IST-Zeit-Tabelle abgleichen möchte, und er mir mit Hilfe einer MsgBox mitteilt, dass die Zeiten stimmen (wenn die SOLL-Zeiten gleich oder unter den IST-Zeiten liegen) bzw. nicht stimmen (wenn die SOLL-Zeiten über den IST-Zeiten liegen)?
Wenn etwas unklar geschrieben wurde von mir dann meldet euch einfach :)
Ich bedanke mich für jede Hilfe!!
LG euer Maik

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: was ist damit? siehe Link.......
10.04.2018 15:56:13
Maik
Hallo Robert, danke für deine Antwort!
Worauf soll ich genau gucken in dem Dokument?
LG
AW: Im Text der Link-nicht von Dir ?
10.04.2018 16:12:21
Dir
Nein das ist ein anderer Maik :D Das war ich nicht.
lade mal eine (abgespeckte) Musterdatei hoch
10.04.2018 15:27:02
UweD
AW: lade mal eine (abgespeckte) Musterdatei hoch
10.04.2018 16:41:25
UweD
so?
Sub Vergleichen()
    Dim TB1, TB2
    Dim UZ As Integer, EZ As Integer, LZ As Integer, ES As Integer, LS As Integer
    Dim I As Integer, J As Integer, GR As String, KL As String
    
    Set TB1 = Sheets("Planung")
    Set TB2 = Sheets("Arbeitszeiten")
    UZ = 2 ' Zeile mit Datum 
    EZ = 4 ' erste Zeile mit Daten 
    ES = 7 'erste Spalte =G 
    
    LZ = TB1.Cells(TB1.Rows.Count, ES).End(xlUp).Row 'letzte Zeile der Spalte 
    LS = TB1.Cells(UZ, TB1.Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile 
    
    For J = ES To LS
        For I = EZ To LZ
            With TB1
                If .Cells(I, J) - TB2.Cells(I, J).Offset(0, -3) > 0 Then
                    GR = GR & .Cells(I, J).Address & ", "
                ElseIf .Cells(I, J) - TB2.Cells(I, J).Offset(0, -3) < 0 Then
                    KL = KL & .Cells(I, J).Address & ", "
                End If
            End With
        Next
    Next
    
    If GR <> "" Then MsgBox GR & " sind Größer"
    If KL <> "" Then MsgBox KL & " sind Kleiner"
    
End Sub

LG UweD
Anzeige
AW: lade mal eine (abgespeckte) Musterdatei hoch
11.04.2018 10:22:44
Maik123
Hallo UweD, die Lösung ist super!
Nur eine Sache müsste verändert werden und zwar: Wie würde der Code aussehen, wenn er mir am Ende das Datum der jeweiligen Spalte ausgibt? Also ich benötige nicht die Ausgabe der einzelnen Zellen die nicht gleich sind, sondern nur das Datum welches in der Spalte steht, wo eine Unstimmigkeit gefunden wurde.
Bsp: In Spalte J von TB1 wurden größere Zeiten gefunden. Jetzt soll mir die MsgBox das Datum 29.3.17 ausgeben. Somit der Benutzer gleich erkennt, dass an diesem Tag die Zeiten nicht übereinstimmen und es später geguckt werden muss, welche Zeilen genau betroffen sind.
Und relevant sind nur die Ergebnisse wenn größer 0 bei TB1. Kleiner 0 kann vernachlässigt werden.
Ein großes dankeschön für deine Mühe!!
LG Maik
Anzeige
AW: lade mal eine (abgespeckte) Musterdatei hoch
11.04.2018 11:50:46
UweD
Hallo nochmal
dann so...
Sub Vergleichen()
    Dim TB1, TB2
    Dim UZ As Integer, EZ As Integer, LZ As Integer, ES As Integer, LS As Integer
    Dim I As Integer, J As Integer, GR As String, TMP
    
    Set TB1 = Sheets("Planung")
    Set TB2 = Sheets("Arbeitszeiten")
    UZ = 2 ' Zeile mit Datum 
    EZ = 4 ' erste Zeile mit Daten 
    ES = 7 ' erste Spalte =G 
    
    LZ = TB1.Cells(TB1.Rows.Count, ES).End(xlUp).Row 'letzte Zeile der Spalte 
    LS = TB1.Cells(UZ, TB1.Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile 
    
    For J = ES To LS
        For I = EZ To LZ
            With TB1
                If .Cells(I, J) - TB2.Cells(I, J).Offset(0, -3) > 0 Then
                    If InStr(GR, .Cells(UZ, J) & ", ") = 0 Then 'nur, wenn das Datum noch nicht genannt wurde 
                        GR = GR & .Cells(UZ, J) & ", "
                    End If
                End If
            End With
        Next
    Next
    
    If GR <> "" Then TMP = MsgBox(GR & vbLf & vbLf & "bitte kontrollieren ", vbCritical, "Größer Warnung")
    
End Sub
LG UweD
Anzeige
AW: lade mal eine (abgespeckte) Musterdatei hoch
11.04.2018 12:42:37
Maik123
UweD das ist perfekt! Genau so habe ich mir das vorgestellt! Vielen herzlichen Dank!!!
MfG Maik
Prima! Danke für die Rückmeldung. owT
11.04.2018 12:44:15
UweD

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige