Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei ergänzen

Datei ergänzen
Markus
Hallo zusammen
Unsere EDV-Abteilung hat mir eine Datei (EAN PROD LNR 3 77259.xlsm) zur Verfügung gestellt die später dazu benötigt wird die Daten in unserem System einzuspielen.
Da neben mir noch 2 weitere Personen die Daten sammeln, habe ich eine Arbeitsdatei (WE Eingabe EAN 77260.xls) erstellt. Mir ist auch nicht wohl dabei, wenn andere mit der Hauptdatei arbeiten (wichtige Daten löschen oder überschreiben)
Das Problem ist jetzt, wie bekomme ich die gesammelten Daten aus der Datei (WE Eingabe EAN 77260.xls) (Spalten B,C,D,E und F) in die andere Datei (EAN PROD LNR 77259.xlsm).
Wichtig ist, dass das nur leere Zellen (in den Spalten H,I und J) ergänzt werden.
Die Arbeiten wären durchaus mit einem SVERWEIS machbar, da aber die eigentliche Haupdatei über 25'000 Zeilen beträgt ist das ein enorm grosser Aufwand ... für mich und mein PC ;-)
Hoffentlich kann mir jemand Helfen.
EAN PROD LNR 3: https://www.herber.de/bbs/user/77259.xlsm
WE Eingabe EAN: https://www.herber.de/bbs/user/77260.xls
Grüsse aus der Schweiz
Markus

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Codevorschlag
29.10.2011 10:00:19
Erich
Hi Markus,
probier mal den folgenden Code.
Vorher solltest du im Zielblatt das Zahlenformat der Spalten A bis J auf "Text" stellen,
damit keine Werte in Zahlen umgewandelt werden.

Option Explicit
Sub EingabenUebernehmen()        ' Der Code steht in Mappe 77259.xlsm
Dim lngE As Long, arE, ee As Long
Dim lngS As Long, arN, arD, vv, ss As Long, cc As Long
ThisWorkbook.Activate
With Workbooks("77260.xls").Sheets(1)       ' anpassen
lngE = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
arE = .Cells(2, 1).Resize(lngE, 6)
End With
With Sheets("EAN PRD AEKLAR")
lngS = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
arN = Application.Transpose(.Cells(2, 1).Resize(lngS))
arD = .Cells(2, 8).Resize(lngS, 3)
For ee = 1 To lngE
vv = Application.Match(arE(ee, 1), arN, 0)
If IsNumeric(vv) Then
ss = vv + 1
Else
lngS = lngS + 1
ss = lngS + 1
.Cells(ss, 1) = arE(ee, 1)
End If
For cc = 2 To 4
If arE(ee, cc) > "" Then
If IsEmpty(.Cells(ss, cc + 6)) Then _
.Cells(ss, cc + 6) = arE(ee, cc)
End If
Next cc
For cc = 5 To 6
If arE(ee, cc) > "" Then .Cells(ss, cc + 6) = arE(ee, cc)
Next cc
Next ee
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schönes Wochenende!
Anzeige
AW: Codevorschlag
29.10.2011 12:05:00
Markus
Hallo Erich
Erstmal Danke für deinen Tipp.
Die Zeile 6 habe ich wie folgt geändert:
With Workbooks("WE Eingabe EAN.xls").Sheets(Eingabe)
Die Spalten A-J in der Datei EAN PROD LNR 3 sind auch auf TEXT formartiert.
Jetzt kommt die Meldung:
"Microsoft Visual Basic"
Index ausserhalb des gültigen Bereichs
Beide Dateien sind geöffnet
Gruss Markus
Fehlermeldung
29.10.2011 12:23:41
Erich
Hi Markus,
wenn du einen Fehler mitteilst, solltest du immer auch hinschreiben, in welcher Codezeile der Fehler auftritt,
auch die Fehlernummer (9?) kann nie schaden!
Hier vermute ich den Fehler in der Zeile, die du gepostet hast. Wofür steht in
Workbooks("WE Eingabe EAN.xls").Sheets(Eingabe)
das Wort "Eingabe"?
So wie du es geschrieben hast (ohne Gänsefüße) sollte es eine Variable mit dem Namen Eingabe geben.
Oder heißt das Blatt "Eingabe"? Dann solltest du es auch als Text in Gänsefüße schreiben (wie "WE Eingabe EAN.xls"):
With Workbooks("WE Eingabe EAN.xls").Sheets("Eingabe")
Eigentlich sollte dein Code so überhaupt nicht kompilierbar sein - da ja keine Variable Eingabe deklariert ist.
Hast du etwa die Zeile "Option Explicit" weggelassen? Das rächt sich hier sofort!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Fehlermeldung
29.10.2011 12:41:10
Markus
Hallo Erich
Genau ... an den "Gänsefüsschen" hat es wohl gelegen ;-)
Der PC arbeitet noch ... Sanduhr läuft
Bin mal gespannt was passiert
Gruss Markus
AW: Fehlermeldung
29.10.2011 12:55:47
Markus
Hallo Erich
Soweit so Gut ... SUPER Dankeschön.
Jetzt hat es aber nicht alles übernommen.
Beispiel:
WE Eingabe EAN.xlsx Zelle "B237"
Artikel.-Nr.: 496115
EAN Code: 7391390071071

sollte eigenlich bei der Datei
EAN PROD LNR 3.xlsm Zelle "I12" stehen.
Gruss Markus
Aufgabe unklar
29.10.2011 13:17:14
Erich
Hi Markus,
bislang hatte ich angenommen, dass Daten aus Eingabe-Spalte B in Spalte H, aus Spalte C in Spalte I und
aus Spalte D in Spalte J übernommen werden sollten, wenn die jeweilige Zielzelle leer ist.
Nun möchtest du einen Wert aus Eingabe!B nicht in Spalte H, sondern in Spalte I des Zielblatts übernommen haben.
Das passt nicht zusammen. Du müsstest nun genauer beschreiben, was wann woher wohin übertragen werden soll.
Sollen Daten z. B. aus Spalte B manchmal in Spalte H, manchmal aber auch in I oder J landen?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Aufgabe unklar
29.10.2011 14:57:22
Markus
Hallo Erich
Genau so:

Sollen Daten z. B. aus Spalte B manchmal in Spalte H, manchmal aber auch in I oder J landen?
Entschuldige bitte meine "unklare" Aussage
Gruss Markus
nicht ganz so einfach
29.10.2011 16:34:51
Erich
Hi Markus,
ich hatte geschrieben:

Du müsstest nun genauer beschreiben, was wann woher wohin übertragen werden soll.
Meinst du wirklich, dass das mit einem "manchmal so, manchmal auch so" erledigt ist?
Da erwarte ich von dir etwas mehr...
Nebenbei: "manchmal so, manchmal auch so" könnte man etwa mittels Zufallsfunktion programmieren...
Wieder mal meine Vermutung:
Jeder der maximal drei Eingabewerte (aus den Spalten B:D) wird in die erste freie Zelle
in den Spalten H:J des Zielblatts geschrieben - sofern nicht schon alle drei Zielzellen gefüllt sind.
Frage 1:
Trifft meine Vermutung zu?
Frage 2:
Was soll mit Eingaben passieren, für die in der Zielzeile kein Platz mehr ist?
Frage 3:
Was soll passieren, wenn ein Eingabewert bereits in einer der möglichen Zielzellen auftaucht?
Frage 4: (aus meinem 2. Beitrag)
Hattest du im Modul die Zeile "Option Explicit" (als erste Zeile) weggelassen? (Ich will hoffen, sie steht (wieder) drin...)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: nicht ganz so einfach
29.10.2011 18:05:46
Markus
Hallo Erich
Zu deinen Fragen:
#1: ja nur die leeren Zellen der Zieldatei sollten beschrieben werden
#2: am besten wäre eine "farbliche" Markierung z.B. gelber Hintergrund
#3: optimal wäre ebenfalls eine "farbliche" Markierung
#4: ja, es hat wirklich nur an den "Gänsefüsschen"gelegen.
Gruss Markus
nun gut
29.10.2011 18:37:50
Erich
Hi Markus,
es scheint recht schwer zu sein, so eine Aufgabe zu definieren...
Die farblichen Markierungen (für "bereits vorhanden" bzw. "wg. Platzmangels nicht übertragen"
werden im Eingabeblatt vorgenommen. Probier mal

Option Explicit     ' immer zu empfehlen !!
Sub EingabenUebernehmen()        ' Der Code steht in Mappe 77259.xlsm
Dim lngE As Long, arE, ee As Long
Dim lngS As Long, arN, arD, vv, ss As Long, cc As Long, ff As Long
ThisWorkbook.Activate
Sheets("EAN PRD AEKLAR").Activate
With Workbooks("77260.xls").Sheets("Eingabe")      ' anpassen
lngE = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
arE = .Cells(2, 1).Resize(lngE, 6)
lngS = Cells(Rows.Count, 1).End(xlUp).Row - 1
arN = Application.Transpose(Cells(2, 1).Resize(lngS))
arD = Cells(2, 8).Resize(lngS, 3)
For ee = 1 To lngE
vv = Application.Match(arE(ee, 1), arN, 0)
If IsNumeric(vv) Then
ss = vv + 1
Else
lngS = lngS + 1
ss = lngS + 1
Cells(ss, 1) = arE(ee, 1)
End If
For cc = 2 To 4
If arE(ee, cc) > "" Then
For ff = 8 To 10
If Cells(ss, ff) = arE(ee, cc) Then
.Cells(ee + 1, cc).Interior.Color = 65535
Exit For
ElseIf Cells(ss, ff) = "" Then
Cells(ss, ff) = arE(ee, cc)
Exit For
End If
Next ff
If ff > 10 Then .Cells(ee + 1, cc).Interior.Color = 49407
End If
Next cc
For cc = 5 To 6
If arE(ee, cc) > "" Then Cells(ss, cc + 6) = arE(ee, cc)
Next cc
Next ee
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: nun gut
29.10.2011 20:36:13
Markus
Hallo Erich
O.K., das mit Farben hat geklappt. Orange und gelbe Markierung
Jetzt nimmt es mir aber die Daten aus den Spalten E + F (WE Eingabe EAN) auch nach vorne.
Die gehören in der Haupdatei "EAN PROD LNR3" in die Spalten M resp. N
Gruss Markus
AW: nun gut
29.10.2011 20:49:05
Markus
Hallo Erich
O.K., alles in Ordnung.
Hatte in der Zieldatei "versehentlich" eine Spalte eingefügt.
Habe die wieder gelöscht, nun ist alles O.K.
Was sollte die gelbe resp. orange Markierung bedeuten?
Gruss Markus
Dankeschön
29.10.2011 22:02:56
Markus
Hallo Erich
hab es nun herausgefunden:
orange = kein Platz mehr
gelb= bereits vorhanden
Genial ...
Vielen Dank
Gruss Markus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige