19.09.2017, 19:12
Guten Abend,
ich habe eine Excel-Datei vorliegen, wo drin ich mit meinen anfänglichen Versuchen gerne, ein Code basteln möchte. Dies habe ich versucht mit einem Einbau eines Arrays versucht zu lösen, aber wahrscheinlich geh ich da viel zu kompliziert ran. Leider stoße ich schon bei den Grundlagen an meinen Grenzen und erhoffe mir, Stück für Stück mir VBA aneignen zu können. Zumindest, dass ich die Grundlagen beherrsche, mit der Hilf von euch.
Zu der Aufgabenstellung:
Ich habe eine Excel-Datei mit zwei verschiedenen Sheets, die vom Aufbau her identisch sind. In den Sheet "Orginal" kommen immer neue Datensätze rein, sprich immer neue Artikel(Zeilen). Im Zweiten Sheet "Bearbeiten" möchte ich diese hinzufügen. Kommen im "Orignal" neue rein, soll ein Abgleich der schon enthaltenen Artikeln in "Bearbeiten" hinten nach "lastrow" hingefügt werden, wenn sie dort nicht enthalten sind. Den folgenden Code habe ich versucht mit einem Kollegen versucht zu basteln, der zwar vom Fach ist aber viel zu schnell/weit etc denkt. Daher ersuche ich eure Hilfe mir zu unterstützen. Mein Code funktioniert leider nicht. Die Excel-Datei habe ich angehängt und der Code folgenden, wie gesagt:
Ich werde jetzt auch öfters im Forum sein, um zu lernen. Da mir VBA programmieren eigentlich Spaß macht, auch wenn ich nicht mal die Grundlagen beherrsche.
Viele Grüße und Cheers :100:
ich habe eine Excel-Datei vorliegen, wo drin ich mit meinen anfänglichen Versuchen gerne, ein Code basteln möchte. Dies habe ich versucht mit einem Einbau eines Arrays versucht zu lösen, aber wahrscheinlich geh ich da viel zu kompliziert ran. Leider stoße ich schon bei den Grundlagen an meinen Grenzen und erhoffe mir, Stück für Stück mir VBA aneignen zu können. Zumindest, dass ich die Grundlagen beherrsche, mit der Hilf von euch.
Zu der Aufgabenstellung:
Ich habe eine Excel-Datei mit zwei verschiedenen Sheets, die vom Aufbau her identisch sind. In den Sheet "Orginal" kommen immer neue Datensätze rein, sprich immer neue Artikel(Zeilen). Im Zweiten Sheet "Bearbeiten" möchte ich diese hinzufügen. Kommen im "Orignal" neue rein, soll ein Abgleich der schon enthaltenen Artikeln in "Bearbeiten" hinten nach "lastrow" hingefügt werden, wenn sie dort nicht enthalten sind. Den folgenden Code habe ich versucht mit einem Kollegen versucht zu basteln, der zwar vom Fach ist aber viel zu schnell/weit etc denkt. Daher ersuche ich eure Hilfe mir zu unterstützen. Mein Code funktioniert leider nicht. Die Excel-Datei habe ich angehängt und der Code folgenden, wie gesagt:
Code:
Sub xy()
Dim int_REF_col As Integer
Dim int_MSN_col As Integer
Dim re_REF_col As Integer
Dim re_MSN_col As Integer
Dim iZeilen1, leZeile1, iZeilen2, leZeile2 As Long
Dim ar1_vi_ref(), ar2_int_ref(), ar_safe() As String
Dim value, zahl1 As Integer
Dim j, l, m As Long 'Laufvariable für Vergleich der Arrays
'Read column into the Array****************************************************************************************************************************************
'Count the last row in "Orginal-Sheet"
Worksheets("Orginal").Activate
Sheets("Orginal").Range("Ref_1").Select
leZeile1 = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row 'Zählt letzte Position mit Zeile in der Unique Spalte
iZeilen1 = leZeile1 - ActiveCell.Row 'Subtrahiert die letzteZeile - Überschrift
ReDim ar1_vi_ref(iZeilen1)
ActiveCell.Offset(1, 0).Select
For i = 1 To iZeilen1
ar1_vi_ref(i - 1) = ActiveCell.value
ActiveCell.Offset(1, 0).Select
Next
'Count the last row in "Bearbeiten"
Worksheets("Bearbeiten").Activate
Sheets("Bearbeiten").Range("Ref_2").Select
leZeile2 = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row 'Zählt letzte Position mit Zeile in der Unique Spalte
iZeilen2 = leZeile2 - ActiveCell.Row 'Subtrahiert die letzteZeile - Überschrift
ReDim ar2_int_ref(iZeilen2)
ActiveCell.Offset(1, 0).Select
For i = 1 To iZeilen2
ar2_int_ref(i - 1) = ActiveCell.value
ActiveCell.Offset(1, 0).Select
Next
'Comparing ArrayData**************************************************************************************************************************************************
For j = 0 To iZeilen1
For l = 0 To iZeilen2
j = j + 1
If ar1_vi_ref(j) = "" Or ar1_vi_ref(j) = ar2_int_ref(l) Then
l = l + 1
ElseIf ar1_vi_ref(j) <> ar2_int_ref(l) Then
ar1_vi_ref(j).value = zahl1
End If
Next l
Next j
End Sub
Ich werde jetzt auch öfters im Forum sein, um zu lernen. Da mir VBA programmieren eigentlich Spaß macht, auch wenn ich nicht mal die Grundlagen beherrsche.
Viele Grüße und Cheers :100: