ich nämlich zwei Excel-Dateien haben, „Source.xlsx“ und „Target.xlsx“ mit Daten wie:Wie werden Daten in zwei Arbeitsmappen Zeilen- und Spalten weise zu vergleichen, um die Daten in Ziel Arbeitsmappe hinzufügen
Source.xlsx
A B C D E
Signal From To Conductor Cable
#112 68 145 1 1935
#113 78 146 2 1936
#114 88 147 3 1937
#115 98 148 4 1938
#116 108 149 1 1939
#117 118 150 2 1940
#118 128 151 3 1941
#119 138 152 4 1942
#120 148 153 1 1943
#121 158 154 2 1944
Traget.xlsx
A B C D E
From To Conductor Signal Cable
68 145 1935
78 146 1936
88 147 1937
98 148 1938
108 149 1939
118 150 1940
165 151 1941
138 152 1942
122 133 1943
158 154 1944
Anforderungen:
Ich möchte Daten in beiden Excel-Arbeitsmappen (Blatt 1 für beide) Zeile und Spalte vergleichen. Wenn es übereinstimmt, werden Daten von Signal- und Leiterspalten von Source zu Signal der Zieldatei und Leiterspalten hinzugefügt. Die Kriterien für den Abgleich der Daten sind 1. Reihe Spalte B, Spalte C und Spalte E in Quelldatei und 1. Zeile Spalte A, Spalte B und Spalte E und so weiter.
Sobald die Daten kopiert sind, möchten Sie diese Zeile grün färben, bis die Daten in die Zelle gefüllt sind.
Ich habe den folgenden Code versucht:
Sub E3ToEPlan()
' E3ToEPlan Macro
' Macro to Check/ Transfer data in E3 and EPlan Excel files
Dim sourcebook As Workbook, targetbook As Workbook
Dim sourcesheet As Worksheet, targetsheet As Worksheet
Dim sourcefilename As String, targetfilename As String
sourcefilename = "C:\Source.xlsx"
targetfilename = "C:\Target.xlsx"
Set sourcebook = Workbooks.Open(sourcefilename)
Set targetbook = Workbooks.Open(targetfilename)
Set sourcesheet = sourcebook.Worksheets(1)
Set targetsheet = targetbook.Worksheets(1)
Dim column_count As Long, row_count As Long
column_count = sourcesheet.Columns.Count
row_count = sourcesheet.Rows.Count
'sourcesheet.Range("A2:A9").Copy
'targetsheet.Range("D2:D9").PasteSpecial
'Condition to match the data in the other workbook
Dim i As Integer, j As Integer
For i = 0 To column_count
'For j = 0 To column_count
If sourcesheet.Cells(i, 2).Value = targetsheet.Cells(i, 1).Value And sourcesheet.Cells(_
i, 3).Value = targetsheet.Cells(i, 2).Value And sourcesheet.Cells(i, 5).Value = targetsheet _
.Cells(i, 5) Then
sourcesheet.Cells(i, 1).Value.Copy
targetsheet.Cells(i, 4).Value.PasteSpecial
sourcesheet.Cells(i, 4).Value.Copy
targetsheet.Cells(i, 3).Value.PasteSpecial
targetsheet.Cells(i, column_count).Interior.Color = vbGreen
End If
'Next j
Next i
End Sub
aber es gibt mir Fehler bei If-Anweisung.
Anfangswert von 'I' in der Schleife '0' ist, und Sie können nicht' Zellen (0,2) ' –
Ihren Bedarf verschachtelte Schleifen haben um die richtige Zeile im zweiten Blatt zu finden, – dgorti