Listen jedes Monat zusammenführen und updaten
#11
(01.09.2018, 12:53)Fennek schrieb: Hallo,

teste mal mit diesem Makro. Noch muss die Datei "update.xlsx" heißen, der Code in "Basis.xls" -> Basis.xlsm" eingefügt werden.

Code:
Sub T_1()
Dim BS As Worksheet: Set BS = ActiveSheet
Dim Up As Workbook

Set Up = Workbooks.Open(ThisWorkbook.Path & "\update.xlsx")
'Set Up = Workbooks("update.xlsx")
Set Rng = BS.Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
With Up.Sheets(1)
   For i = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
       r = Application.Match(.Cells(i, 2), Rng, 0)
       If IsError(r) Then
           Debug.Print i, r
           .Range(.Cells(i, 1), .Cells(i, "L")).Copy BS.Cells(Rows.Count, 1).End(xlUp).Offset(1)
           BS.Cells(Rows.Count, 1).End(xlUp).Resize(, 12).Interior.Color = vbYellow
       End If
   Next i
End With
Up.Close 0
End Sub

mfg

Hallo,
hab den Code eingefügt und das Makro laufen lassen. Die Datensätze wurden jedoch komplett, also alle Zeilen in die Basis kopiert und gelb eingefärbt. Leider eben auch die doppelten.
Top
#12
Hallo Carlo1.
 
Ich glaube, ich kann Dir eine praktikable Lösung für Aufgabe 2 vorschlagen.
 
Die Spalten A, C, D etc. füllst Du ab Zeile 48 mit den Werten aus der update-Tabelle ab Zeile 2
 
A48=update!A2
C48=update!C2  etc.
Du hängst quasi die update-Tabelle im ersten Schritt an die Basis-Tabelle hinten dran.
 
Jetzt füllst Du die Spalte B mit folgendem Konstrukt

           WENNNV(SVERWEIS(update!B2;B$2:B$47;1;0)-SVERWEIS(update!B2;B$2:B$47;1;0);update!B2)

und ziehst es 61 Zeilen runter. Werte aus update, die schon vorhanden sind, werden mit Null belegt. Nur die fehlenden bekommen die eindeutige Nummer
 
Jetzt löschst Du alle Zeilen mit Bx=0 und hast alle fehlenden Vorgänge hinzugefügt.
 
Ich hoffe, das hilft.
 
Peter
Top
#13
Hab was vergessen. Ich hatte mir die Update-Tabelle als zweites Blatt nach "Basis" kopiert. Du müsstest in der Formel dann noch mit [....] auf die separate update-Datei verweisen.
Top
#14
Moin,
so richtig verstanden habe ich dein Anliegen nicht ...
Und auch ich bin der Meinung, dass hier eigentlich eine Datenbank angesagt ist.
Aber ich habe mal einen Versuch gestartet. Warum da immer irgendwo eine leere Zeile drin ist, kann ich im Moment nicht sagen; mir fehlt im Moment aber auch die Zeit, das nachzuprüfen.

Einfach mal sehen, ob du das in dieser Richtung gemeint hast.


Angehängte Dateien
.xlsx   BasisUpdate.xlsx (Größe: 54,69 KB / Downloads: 4)
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#15
zu #11

der Code ist mit den bereitgestellten Dateien getestet, es wurden nur 4 Zeilen aus update angefügt und farblich markiert.

Die Antwort ist zu allgemein um nach einem Fehler suchen zu können.
Top
#16
(01.09.2018, 14:52)GMG-CC schrieb: Moin,
so richtig verstanden habe ich dein Anliegen nicht ...
Und auch ich bin der Meinung, dass hier eigentlich eine Datenbank angesagt ist.
Aber ich habe mal einen Versuch gestartet. Warum da immer irgendwo eine leere Zeile drin ist, kann ich im Moment nicht sagen; mir fehlt im Moment aber auch die Zeit, das nachzuprüfen.

Einfach mal sehen, ob du das in dieser Richtung gemeint hast.

Hallo Günter,
danke vorerst, dass überhaupt ein Hilfeversuch gestartet wird.


Im ersten Step müssen von der Datei Update die bereits vorhanden Einträge aus der Basis gefunden werden. Dazu ist einzig die Spalte B zuständig .
Ist eine Nummer in der Update Spalte B bereits in der Basis vorhanden, dann ignorieren, ansonsten ie komplette zeile aus Update in die Basis unten dazuhängen.

Dies wäre die absolut wichtigste Lösung für mich. Der Rest ist Draufgabe.

DIe Makrolösung wäre super, da am einfachsten. Lösung von Panderson hab ich eben getestet und ist relativ aufwendig und irgendwie zeigts mir das ganze auch noch nicht richtig an.
Top
#17
(01.09.2018, 15:00)carlo1 schrieb: Im ersten Step müssen von der Datei Update die bereits vorhanden Einträge aus der Basis gefunden werden. Dazu ist einzig die Spalte B zuständig .
Ist eine Nummer in der Update Spalte B bereits in der Basis vorhanden, dann ignorieren, ansonsten ie komplette zeile aus Update in die Basis unten dazuhängen.
Hallo
Dies und die Tatsache, dass aus mehreren Dateien importiert werden soll (wenn ich richtig verstanden habe) riecht sehr nach dem Einsatz von ADO. Aber im Moment habe ich weder Lust noch Zeit. Vielleicht morgen.
Top
#18
Moin,
so, ich habe folgendes gemacht (mit meinen Worten): BASIS bleibt so, wie sie ist. Jetzt alle Datensätze aus UPDATE, deren einmalige Nummer (Spalte_B) noch nicht in BASIS enthalten ist, anhängen. Das Ergebnis (ohne die beiden unsichtbaren importierten Files) siehst du im Anhang. Die Zahl der zu vergleichenden Daten ist ja ganz übersichtlich ... ICH würde für Testzwecke die kalendarischen Daten  der neu hinzugefügten Datensätze in Spalte_G auf das Jahr 2100 ändern, dann sind die leichter für Kontrollzwecke zu finden ...

Da du ja 2016 hast, ist das alles mit Bordmitteln ohne VBA zu machen.


Angehängte Dateien
.xlsx   BasisUpdate_2.xlsx (Größe: 29,39 KB / Downloads: 4)
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • carlo1
Top


Gehe zu:


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