ricotumb
Goto Top

Zeilen verschiedener Tabellenblätter vergleichen

Hallo zusammen,

ich habe folgendes Problem:
Ich habe zwei Tabellenblätter (Tabellen2 und Tabellen3). In Tablle3 sind Daten zeilenweise aufgelistet. Es wurde dann ein Filter eingesetzt und bestimmte Daten nach dem Filtern wurden in Tabelle2 kopiert. Jede Zeile hat eine VorgangsID. Es soll nun in Tabelle2 jede Zeile mit jeder Zeile in Tabelle3 verglichen werden. Falls es nicht die selbe Zeile ist (was man an der VorgangsID erkennt) und bestimmte Voraussetzungen erfüllt sind, soll die jeweilige VorgangsID der Zeile aus Tabelle3 wieder in der Tabelle3 in Zeile 348 kopiert werden. Jede weitere VorgangsID, die die Voraussetzungen erfüllt und kopiert werden soll, soll dann unter diesen Eintrag kopiert werden.

Voraussetzungen sind folgende:

WENN beim Vergleich zweier Zeilen:
Datum auf Tabelle3 soll jünger ist
UND die unternehmensID in einer der Partnerspalten auftaucht
UND in einer der tie types INTERNATIONAL vermerkt ist

Ich habe nun folgendes Problem: ich habe selbst in kurzer Zeit versucht einen Code zu schreiben, der sicher programmiertechnisch nicht wirklich gut ist, da ich VBA Anfänger bin. Das Problem ist nun, dass der Code die VorgangsID des ersten Eintrags, der die Voraussetzung erfüllt richtig kopiert... Falls jedoch ein weiterer Eintrag zutreffend ist, wird diese VorgangsID nicht übernommen. Zudem werden manche VorgansIDs doppel oder dreifach kopiert. Unten poste ich auch meinen Code.

Ich wäre sehr dankbar, wenn mir jemand helfen könnte!

Vielen Dank im voraus!
Rico

Sub Probe()

Dim datum1 As String
Dim datum2 As String
Dim zeile As Integer
Dim spalte As Integer
Dim y As Integer
Dim neuZeile As Integer
Dim neuSpalte As Integer
Dim kopierZeile As Integer
Dim kopierSpalte As Integer
Dim unternehmensID As Integer



spalte = 9
neuSpalte = 2
kopierZeile = 348
kopierSpalte = 1

Set Table = ThisWorkbook.Worksheets("Tabelle2")  

With Table


For zeile = 2 To 36
    neuZeile = 2
  
    Do While neuZeile <= 346
    
    datum1 = .Cells(zeile, spalte).Value
    datum2 = ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 7).Value  
    unternehmensID = ThisWorkbook.Worksheets("Tabelle2").Cells(zeile, spalte - 6).Value  

    If (DateValue(datum2) <= DateValue(datum1)) _
        And (.Cells(zeile, spalte - 8).Value <> ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte).Value) _  
        And ((unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 1).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 21).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 27).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 33).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 39).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 45).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 51).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 57).Value) _  
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 63).Value)) _  
        And ((ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 17).Value = "INTERNATIONAL") _  
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 23).Value = "INTERNATIONAL") _  
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 29).Value = "INTERNATIONAL") _  
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 35).Value = "INTERNATIONAL") _  
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 41).Value = "INTERNATIONAL") _  
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 47).Value = "INTERNATIONAL") _  
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 53).Value = "INTERNATIONAL")) _  
        Then
        'WENN beim Vergleich zweier Zeilen:  
        'Datum auf Tabelle3 soll jünger ist  
        'UND die unternehmensID in einer der Partnerspalten auftaucht  
        'UND in einer der tie types INTERNATIONAL vermerkt ist  
        'DANN:  
        
            y = ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte - 1).Value  
    
            ThisWorkbook.Worksheets("Tabelle3").Cells(kopierZeile, kopierSpalte).Value = y  
            
            kopierZeile = kopierZeile + 1

    Else
    
    End If
    
    neuZeile = neuZeile + 1
    
    'Vergleich mit der nächsten Zeile fortführen  
    
    Loop
    
 
Next zeile

End With

End Sub

Content-Key: 164985

Url: https://administrator.de/contentid/164985

Printed on: April 25, 2024 at 08:04 o'clock