Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Worksheets Vergleichen
#1
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:


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:
Antworten Top
#2
Hallo,

es ist keine Antwort auf deine Frage, aber ein Hinweis:

http://office-loesung.de/p/viewtopic.php?f=166&t=746191&sid=9781098c85d45ad1ac99e21cce1f149a

Dort gab es eine (etwas) ähnliche Frage.

mfg

(den Code habe ich nicht "gelesen")
Antworten Top
#3
Wink 
Hallo,
zunächst herzlichen Glückwunsch zu Deinem Entschluss, Excel und VBA sind ein hervorragendes Instrument, um die Weltherrschft zu ergreifen! :15:
Ohne Deinen Code zu testen oder voll gelesen zu haben:
Select ist fast immer unnötig und verlangsamt den Ablauf, versuche also, ohne auszukommen.
Als Anlauf habe ich den ersten Teil ohne Select umgesetzt:
 
   With Sheets("Original") 'damit werden ohne Select Zellen in Original angesprochen 
     firstzeile = .Range("Ref_1").Row + 1
     spalte = .Range("Ref_1").Column
     leZeile1 = .Cells(Rows.Count, spalte).End(xlUp).Row         'Zählt letzte Position mit Zeile in der Unique Spalte
     iZeilen1 = leZeile1 - firstzeile + 1                         'Subtrahiert die letzteZeile -  Überschrift
 
     Redim ar1_vi_ref(iZeilen1)
 
     'ActiveCell.Offset(1, 0).Select
     For i = 1 To iZeilen1
         ar1_vi_ref(i - 1) = .Cells(i + firstzeile - 1, spalte).Value
         'ActiveCell.Offset(1, 0).Select
     Next
   End With
Gruß der AlteDresdner (Win11, Off2021)
[-] Folgende(r) 1 Nutzer sagt Danke an AlterDresdner für diesen Beitrag:
  • Sunpoint
Antworten Top
#4
(19.09.2017, 19:25)AlterDresdner schrieb: Hallo,
zunächst herzlichen Glückwunsch zu Deinem Entschluss, Excel und VBA sind ein hervorragendes Instrument, um die Weltherrschft zu ergreifen! :15:
Ohne Deinen Code zu testen oder voll gelesen zu haben:
Select ist fast immer unnötig und verlangsamt den Ablauf, versuche also, ohne auszukommen.
Als Anlauf habe ich den ersten Teil ohne Select umgesetzt:
 
   With Sheets("Original") 'damit werden ohne Select Zellen in Original angesprochen 
     firstzeile = .Range("Ref_1").Row + 1
     spalte = .Range("Ref_1").Column
     leZeile1 = .Cells(Rows.Count, spalte).End(xlUp).Row         'Zählt letzte Position mit Zeile in der Unique Spalte
     iZeilen1 = leZeile1 - firstzeile + 1                         'Subtrahiert die letzteZeile -  Überschrift
 
     Redim ar1_vi_ref(iZeilen1)
 
     'ActiveCell.Offset(1, 0).Select
     For i = 1 To iZeilen1
         ar1_vi_ref(i - 1) = .Cells(i + firstzeile - 1, spalte).Value
         'ActiveCell.Offset(1, 0).Select
     Next
   End With

Na du alterDresdner :), 
schöne Grüße aus Hamburg!

Danke zunächst für euren Input zu später Stunde!

Werde ich dann editieren. Macht auch Sinn. Das Ding ist einfach, ich kann mittlerweile die Markos nachvollziehen aber schaffe es einfach nicht selber einen Code zu schreiben, da wie gesagt, mir die Grundlagen fehlen oder mir einfach ein bestimmter Stammbaum an Wissen fehlt :19: aber dran bleiben, würdest du jetzt wahrscheinlich schreiben .

Zitat:Fennek



Hallo,

es ist keine Antwort auf deine Frage, aber ein Hinweis:

http://office-loesung.de/p/viewtopic.php...1cce1f149a

Dort gab es eine (etwas) ähnliche Frage.

mfg

(den Code habe ich nicht "gelesen")

Ich werden den Thread mal mitverfolgen. Habe mir den Code auch angeschaut, steige aber nicht zu 100% durch. Danke!
Antworten Top
#5
Hallo Sunpoint,

du musst nicht immer den gesamten Beitrag zitieren. Entweder suchst du dir einen bestimmten Teil aus oder du benutzt den Antwort-Button am Ende des Antwortformulars (nicht den Zitieren-Button).
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Sunpoint
Antworten Top
#6
Hat jemand keinen anderen Ansatz?  *kleiner Push*  Sleepy

Grüße,
Sun
Antworten Top
#7
Hallo,

(23.09.2017, 10:09)Sunpoint schrieb: Hat jemand keinen anderen Ansatz?

ich habe keinen anderen Ansatz.

Gruß Uwe
Antworten Top
#8
Hallo Sunpoint,

eventuell kannst Du auch die Daten alle anfügen und dann die Duplikate entfernen?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
Kann geschlossen werden! 

Zum Vorredner, genau das tut das Makro., dennoch vielen Dank  Blush
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste