AW: Rückfrage
08.10.2014 17:03:22
Michael
Hallo Monika,
ich bitte meine Faulheit zu entschuldigen...
Ich hab's mir einfach gemacht und ein neues Tabellenblatt in Deiner ALTEN Datei angelegt, das ist dann die Tabelle4, in die das Makro alle Daten schreibt.
Es sind zwei Teile:
a) einzeilig_Kopieren kopiert alles aus OrderStatus
b) mischt alles aus OrderTracker rein UND schreibt ein x in Spalte K, wenn was kopiert wurde: das dient dazu, diese Daten evtl. noch zusätzlich reinzukopieren, wenn gewünscht.
Option Explicit
Sub einzeilig_Kopieren()
Dim zeile, zeile_erg As Long
Dim orderNr, ProdNr As String
zeile = 2
zeile_erg = 3
While Tabelle1.Range("A" & zeile) ""
Tabelle1.Rows(zeile).Copy Destination:=Tabelle4.Rows(zeile_erg)
orderNr = Tabelle1.Range("A" & zeile).Value
zeile = zeile + 1
While Tabelle1.Range("A" & zeile).Value = orderNr
Tabelle4.Range("D" & zeile_erg).Value = _
Tabelle4.Range("D" & zeile_erg).Value & " " & _
Tabelle1.Range("D" & zeile).Value
zeile = zeile + 1
Wend
zeile_erg = zeile_erg + 1
Wend
End Sub
Sub Tracker_reinmischen()
Dim zeile As Long
Dim orderNr As String
Dim gefunden As Range
zeile = 3
While Tabelle4.Range("A" & zeile) ""
orderNr = Tabelle4.Range("A" & zeile).Value
Set gefunden = Tabelle2.Cells.Find(What:=orderNr, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not gefunden Is Nothing Then
Tabelle2.Range("A" & gefunden.Row & ":H" & gefunden.Row).Copy _
Destination:=Tabelle4.Cells(zeile, 11)
Tabelle2.Range("I" & gefunden.Row).Value = "x"
End If
zeile = zeile + 1
Wend
End Sub
Sub alles_machen() ' das hier aufrufen
einzeilig_Kopieren
Tracker_reinmischen
End Sub
Die Faulheit besteht darin, daß ich nicht Zelle für Zelle dahin kopiere, wo Du sie haben willst, sondern jeweils die komplette Zeile nach Ax bzw. Kx: es ist kein großer Aufwand, die Spalten hinterher untereinander zu verschieben bzw. doppelte zu löschen.
File anbei: https://www.herber.de/bbs/user/93035.xls
Schöne Grüße,
Michael