Supportnet / Forum / Tabellenkalkulation
| Excel 2000 Makro zum gleichzeitigen Verschieben von Zeilen & Dateienabgleich |
Frage
Moin Moin,
ich habe ein Frage zu Excel (Version 2000) und Makros und zwar bekomme ich jeden Monat eine Liste mit 100 Namen, sortiert nach Einnahmen.
Dann habe ich eine Excel-Datei, in der auf dem ersten Blatt alle Adressen stehen und in dem zweiten Blatt weitere Informationen (aber auch nochmals der Name) stehen. Diese Datei ist auch nach Einnahmen sortiert, allerdings nach denen des Vormonats und soll jeden Monat anhand der 1. Datei aktualisiert werden.
Bisher musste das immer von Hand gemacht werden, d.h. die erste Datei wurde ausgedruckt (liegt aber auch alles Datei vor) und dann wurde sie mit der 2. Datei verglichen. D.h. es musste der Rang geändert werden und die Zeile dann an die neue Position verschoben werden. In einem zweiten Schritt musste dann in dem zweiten Blatt der 2. Datei ebenfalls die Zeilen angepasst werden, sodass z.B. in der Zeile 12 auch die Information zu dem Menschen stand, der auch im Blatt 1 in Zeile 12 stand.
Das wollte ich jetzt alles vereinfachen und habe mich so ein bissl informiert- die Lösung scheinen Makros zu sein, aber meine Fähigkeiten reichen hierfür leider nicht aus, daher bitte ich um eure Mithilfe für folgende Probleme:
PROBLEM 1: Sortieren der Daten in Datei 2, sowie Eingabe des neuen Rangs (das würde ja z.B. über eine Formel mit Zeile-1 funktionieren???) nach Vorgaben von Datei 1.
PROBLEM 2: Gleichzeitiges Verschieben der Zeilen in beiden Registerblättern der 2. Datei.
Zu berücksichtigen wäre noch, dass evtl. neue Namen in der Liste auftauchen.
Vielen Dank schonmal für eure Hilfe.
rapperzahn
Antwort 1 von rapperzahn
Moin Moin nochmals,
ich muss mich noch ein wenig berichtigen:
Und zwar wird in der Datei 2 in beiden Registerblättern eine neue Spalte hinzugefügt mit dem neuen Rank des aktuellen Monats, sodass der Rank des Vormonats dann in der Spalte 2 steht.
Das nur so als Info.
Vielen Dank schonmal
rapperzahn
ich muss mich noch ein wenig berichtigen:
Und zwar wird in der Datei 2 in beiden Registerblättern eine neue Spalte hinzugefügt mit dem neuen Rank des aktuellen Monats, sodass der Rank des Vormonats dann in der Spalte 2 steht.
Das nur so als Info.
Vielen Dank schonmal
rapperzahn
Antwort 2 von rapperzahn
Moin Moin,
ich glaube, ich habe mich etwas umständlich ausgedrückt.
Hier möchte ich nochmals mein Problem erläutern:
Zunächst vielleicht erst einmal genauere Infos zu dem Aufbau der Dateien:
(nach folgendem Schema | Spalte A | Spalte B | usw.)
Quelldatei:
| Rank | Personalnr. | Anrede | Vorn. | Nachname | Str. | PLZ | Ort |
Und diese Datei (mit zwei Tabllenblättern) soll aktualisiert werden anhand der Rankliste der Quelldatei.
Das erste Tabellenblatt sieht so aus:
| neuer Rank | Rank Vormonat | Pers.-Nr. | Vorn. | Nachname |
Das zweite Tabellenblatt ist wie das erste sortiert und sieht so aus:
| Rank neu | Rank Vorm. | Vorn.| Nachname | Str. | PLZ | Ort | Notizen |
Das ist erst einmal der Aufbau. Und wie ich schon schrieb, musste ich bisher immer zuerst das erste Tabellenblatt sortieren und dann anschließend in dem zweiten Tabellenblatt selbiges tun. Das möchte ich gerne automatisieren.
Mein Problem ist es, dass ich mich nicht so mit Makros auskenne (eigentlich gar nicht, außer Aufnahme ;-()
Problem 1: Für den neuen Rank wird eine neue Spalte A eingefügt und die alte Spalte des Vormonats gelöscht (,sodass man immer nur zwei Spalten mit dem Rank hat).
Problem 2: In den beiden Blättern der Zieldatei müssten die Zeilen gleichzeitig verschoben werden, ansonsten wären die Informationen ja asynchron.
Problem 3: Es kann auch vorkommen, dass in der Quelldatei ganz neue Namen auftauchen und dafür alte aus der TOP100 wegfallen. Die müssten ebenfalls mit ihrem Rank eingepflegt werden. Die alten könnten auch einfach nur ans Tabellenende verschoben werden.
Ich hoffe, dass es diesmal eingänglicher war, falls nicht oder weitere Infos benötigt werden, einfach posten.
Vielen, vielen, vielen Dank schonmal
rapperzahn
ich glaube, ich habe mich etwas umständlich ausgedrückt.
Hier möchte ich nochmals mein Problem erläutern:
Zunächst vielleicht erst einmal genauere Infos zu dem Aufbau der Dateien:
(nach folgendem Schema | Spalte A | Spalte B | usw.)
Quelldatei:
| Rank | Personalnr. | Anrede | Vorn. | Nachname | Str. | PLZ | Ort |
Und diese Datei (mit zwei Tabllenblättern) soll aktualisiert werden anhand der Rankliste der Quelldatei.
Das erste Tabellenblatt sieht so aus:
| neuer Rank | Rank Vormonat | Pers.-Nr. | Vorn. | Nachname |
Das zweite Tabellenblatt ist wie das erste sortiert und sieht so aus:
| Rank neu | Rank Vorm. | Vorn.| Nachname | Str. | PLZ | Ort | Notizen |
Das ist erst einmal der Aufbau. Und wie ich schon schrieb, musste ich bisher immer zuerst das erste Tabellenblatt sortieren und dann anschließend in dem zweiten Tabellenblatt selbiges tun. Das möchte ich gerne automatisieren.
Mein Problem ist es, dass ich mich nicht so mit Makros auskenne (eigentlich gar nicht, außer Aufnahme ;-()
Problem 1: Für den neuen Rank wird eine neue Spalte A eingefügt und die alte Spalte des Vormonats gelöscht (,sodass man immer nur zwei Spalten mit dem Rank hat).
Problem 2: In den beiden Blättern der Zieldatei müssten die Zeilen gleichzeitig verschoben werden, ansonsten wären die Informationen ja asynchron.
Problem 3: Es kann auch vorkommen, dass in der Quelldatei ganz neue Namen auftauchen und dafür alte aus der TOP100 wegfallen. Die müssten ebenfalls mit ihrem Rank eingepflegt werden. Die alten könnten auch einfach nur ans Tabellenende verschoben werden.
Ich hoffe, dass es diesmal eingänglicher war, falls nicht oder weitere Infos benötigt werden, einfach posten.
Vielen, vielen, vielen Dank schonmal
rapperzahn
Antwort 3 von rainberg
Hallo rapperzahn,
ich glaube, auch wenn Du noch eine vierte Erläuterung schreibst, wird Dir keiner eine brauchbare Lösung geben können, weil man Dich so nicht versteht.
Warum lädst Du keine Beispieldatei hoch?
Gruß
Rainer
ich glaube, auch wenn Du noch eine vierte Erläuterung schreibst, wird Dir keiner eine brauchbare Lösung geben können, weil man Dich so nicht versteht.
Warum lädst Du keine Beispieldatei hoch?
Gruß
Rainer
Antwort 4 von rapperzahn
Moin Moin,
tschuldigung, natürlich. Ich glaube so wäre es natürlich am einfachsten. Hier also die beiden Dateien:
http://freenet-homepage.de/nyinter/support/support.zip
Schönen Sonntag noch- und auf jeden Fall vielen Dank, dass ihr euch diesem annehmt.
rapperzahn
tschuldigung, natürlich. Ich glaube so wäre es natürlich am einfachsten. Hier also die beiden Dateien:
http://freenet-homepage.de/nyinter/support/support.zip
Schönen Sonntag noch- und auf jeden Fall vielen Dank, dass ihr euch diesem annehmt.
rapperzahn
Antwort 5 von nighty
hi all :-)
der link geht bei mir nicht,seite nicht erreichbar heisst es :-(
gruss nighty
der link geht bei mir nicht,seite nicht erreichbar heisst es :-(
gruss nighty
Antwort 6 von rapperzahn
Moin Moin,
das tut mir Leid, aber bei mir funktioniert der Link. Falls das Problem echt weiterhin besteht, bitte nochmals kurz melden. Ansonsten kann ich es auch gerne per Mail schicken.
LG
rapperzahn
das tut mir Leid, aber bei mir funktioniert der Link. Falls das Problem echt weiterhin besteht, bitte nochmals kurz melden. Ansonsten kann ich es auch gerne per Mail schicken.
LG
rapperzahn
Antwort 7 von Saarbauer
Hallo,
habe mir mal die Dateien angesehen und muss sagen die Zusammenhänge werden mir nicht klar, auch zusamen mit der hier gemachten Beschreibung.
Z.B. warum ist der unter Rank 2 angwegebene in deiner Zielliiste unter Rank 3 ? Woher kommen die Angaben in der Zielliste zu Rank 10 da diese in der Quelle nicht vorhanden sind?
Alles etwas konfus und nicht pausibel
Gruß
Helmut
habe mir mal die Dateien angesehen und muss sagen die Zusammenhänge werden mir nicht klar, auch zusamen mit der hier gemachten Beschreibung.
Z.B. warum ist der unter Rank 2 angwegebene in deiner Zielliiste unter Rank 3 ? Woher kommen die Angaben in der Zielliste zu Rank 10 da diese in der Quelle nicht vorhanden sind?
Alles etwas konfus und nicht pausibel
Gruß
Helmut
Antwort 8 von raperzahn
Moin Moin,
darin steht ja mein Problem. Die beiden Listen sollen ja synchronisiert werden, d.h. die Quelldatei ist die aktuelle und die Zieldatei soll auf den selben Stand gebracht werden.
z.B. die Datei wird jeden Monat aktualisiert, d.h. die Quelldatei wäre vom Oktober, die Zieldatei jedoch noch auf dem Stand des Septembers.
Und daher kommen auch die ungleichen Platzierungen, weil z.B. der "Bernd Beethoven" sich von Platz 3 (=Stand in Zieldatei) auf Platz 2 (=Stand Quelldatei) verbessert hat.
Die Person auf Platz 10 in der Zieldatei hingegen (die ja die ältere ist), ist im neuem Monat aus der Liste rausgerutscht.
Ich hoffe, jetzt ist es klar. Um es auf einen Punkt zu bringen: Die Quelldatei ist auf dem neueren Stand und hat daher Vorrang. Nach ihren Platzierungen soll die Zieldatei sortiert werden!
Vielen Dank
rapperzahn
darin steht ja mein Problem. Die beiden Listen sollen ja synchronisiert werden, d.h. die Quelldatei ist die aktuelle und die Zieldatei soll auf den selben Stand gebracht werden.
z.B. die Datei wird jeden Monat aktualisiert, d.h. die Quelldatei wäre vom Oktober, die Zieldatei jedoch noch auf dem Stand des Septembers.
Und daher kommen auch die ungleichen Platzierungen, weil z.B. der "Bernd Beethoven" sich von Platz 3 (=Stand in Zieldatei) auf Platz 2 (=Stand Quelldatei) verbessert hat.
Die Person auf Platz 10 in der Zieldatei hingegen (die ja die ältere ist), ist im neuem Monat aus der Liste rausgerutscht.
Ich hoffe, jetzt ist es klar. Um es auf einen Punkt zu bringen: Die Quelldatei ist auf dem neueren Stand und hat daher Vorrang. Nach ihren Platzierungen soll die Zieldatei sortiert werden!
Vielen Dank
rapperzahn
Antwort 9 von Saarbauer
Hallo,
habe zur Zeit keine passende Lösung, da mein Versuch mit Sverweis nicht zum passenden Ergebnis führte, werde mir aber mal ein paar Gedanken machen.
Gruß
Helmut
habe zur Zeit keine passende Lösung, da mein Versuch mit Sverweis nicht zum passenden Ergebnis führte, werde mir aber mal ein paar Gedanken machen.
Gruß
Helmut
Antwort 10 von rapperzahn
Moin Moin,
hey vielen Dank auf jeden Fall für die Mühe und die investierte Zeit. Da bin ich mal auf die Lösung (ich hoffe, es gibt eine) gespannt!
Vielen Dank nochmals
rapperzahn
hey vielen Dank auf jeden Fall für die Mühe und die investierte Zeit. Da bin ich mal auf die Lösung (ich hoffe, es gibt eine) gespannt!
Vielen Dank nochmals
rapperzahn
Antwort 11 von Saarbauer
Hallo,
habe es bis jetzt zu keiner Brauchbaren Lösung gebracht, hast du es mal mit Makro aufzeichnen versucht?
Gruß
Helmut
habe es bis jetzt zu keiner Brauchbaren Lösung gebracht, hast du es mal mit Makro aufzeichnen versucht?
Gruß
Helmut
Antwort 12 von Saarbauer
Hallo,
versuch es mal mit dem Makro
Die Farbige Hinterlegung und die Angabe zu "Age" fehlen, da ich deren zustadekommen nicht nachvollziehen kann
Gruß
Helmut
versuch es mal mit dem Makro
Zitat:
Sub Makro1()
Windows("quelle.xls").Activate
Rows("1:11").Select
Selection.Copy
Windows("ziel.xls").Activate
Range("A15").Select
ActiveSheet.Paste
Range("B15:B25").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("D15:E25").Select
Selection.Delete Shift:=xlToLeft
Range("F15:L25").Select
Selection.Delete Shift:=xlToLeft
Range("G15:G25").Select
Selection.Insert Shift:=xlToRight
Range("I15:K25").Select
Selection.Delete Shift:=xlToLeft
Range("I19").Select
For i = 16 To 25
For j = 2 To 11
If Range("C" & i).Value = Range("C" & j).Value Then Range("B" & i).Value = Range("A" & j)
Next j
Next i
Range("A1").Select
Range("A1").Cut Destination:=Range("B1")
Rows("2:15").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "Rank"
Range("A1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
End Sub
Sub Makro1()
Windows("quelle.xls").Activate
Rows("1:11").Select
Selection.Copy
Windows("ziel.xls").Activate
Range("A15").Select
ActiveSheet.Paste
Range("B15:B25").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("D15:E25").Select
Selection.Delete Shift:=xlToLeft
Range("F15:L25").Select
Selection.Delete Shift:=xlToLeft
Range("G15:G25").Select
Selection.Insert Shift:=xlToRight
Range("I15:K25").Select
Selection.Delete Shift:=xlToLeft
Range("I19").Select
For i = 16 To 25
For j = 2 To 11
If Range("C" & i).Value = Range("C" & j).Value Then Range("B" & i).Value = Range("A" & j)
Next j
Next i
Range("A1").Select
Range("A1").Cut Destination:=Range("B1")
Rows("2:15").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "Rank"
Range("A1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
End Sub
Die Farbige Hinterlegung und die Angabe zu "Age" fehlen, da ich deren zustadekommen nicht nachvollziehen kann
Gruß
Helmut
Antwort 13 von rapperzahn
Moin Moin,
vielen Dank. Das klappt ja super.
Ich habe da allerdings noch eine Frage, und zwar: Ist das bei mir ein Aussetzer oder verschiebt der die Zeilen im zweiten Tabellenblatt der Zieldatei nicht mit?
Zudem möchte ich noch ein bissl Licht in den Schatten bringen. Wie kommt "Age" zustande:
Age ist einfach das Alter. Das Geburtsdatum steht ja in der Quelldatei und in der Spalte "Age" ist dann einfach das Alter ausgerechnet [Allerdings wurde dieses manuell ausgerechnet, da mein Vorgänger da keine Formel verwendet hat]
Zum zweiten Punkt:
Wie kommen die Farben zustande:
In der Quelldatei gibt es ja eine Spalte mit dem Titel "Status" und die Farben in der Zieldatei spiegeln nur den Status wieder, d.h.:
Grün= Profi
Gelb= Powerseller
Blau= Seller
Das sind die Grundfarben, desweiteren waren ja bei zwei Personen die Platzierungen lila eingefärbt: Das bedeutet einfach nur, das diese Personen zum ersten Mal in der Liste auftauchen- mehr nicht. Diese Felder beinhaltet ja auch die Notiz "NEWTOP SEP08". Also unterstützt die Farbe dieses nur noch einmal [ebenfalls nicht meine Idee]
Dann gibt es noch den internen Status, welcher in der Spalte "OK?" zu finden ist. Dabei gibt es für uns was besonderes zu beachten, wenn der Status einer Person auf "N" steht, daher sind diese in der Zeildatei rot eingefärbt!
Ich konnte, ich konnte das aufklären.
Und freue mich auf die Aufklärung zur Sortierung des zweiten Tabellenblatts.
Großes Dankeschön auf jeden Fall mal.
Schönen Sonntagabend noch
rapperzahn
vielen Dank. Das klappt ja super.
Ich habe da allerdings noch eine Frage, und zwar: Ist das bei mir ein Aussetzer oder verschiebt der die Zeilen im zweiten Tabellenblatt der Zieldatei nicht mit?
Zudem möchte ich noch ein bissl Licht in den Schatten bringen. Wie kommt "Age" zustande:
Age ist einfach das Alter. Das Geburtsdatum steht ja in der Quelldatei und in der Spalte "Age" ist dann einfach das Alter ausgerechnet [Allerdings wurde dieses manuell ausgerechnet, da mein Vorgänger da keine Formel verwendet hat]
Zum zweiten Punkt:
Wie kommen die Farben zustande:
In der Quelldatei gibt es ja eine Spalte mit dem Titel "Status" und die Farben in der Zieldatei spiegeln nur den Status wieder, d.h.:
Grün= Profi
Gelb= Powerseller
Blau= Seller
Das sind die Grundfarben, desweiteren waren ja bei zwei Personen die Platzierungen lila eingefärbt: Das bedeutet einfach nur, das diese Personen zum ersten Mal in der Liste auftauchen- mehr nicht. Diese Felder beinhaltet ja auch die Notiz "NEWTOP SEP08". Also unterstützt die Farbe dieses nur noch einmal [ebenfalls nicht meine Idee]
Dann gibt es noch den internen Status, welcher in der Spalte "OK?" zu finden ist. Dabei gibt es für uns was besonderes zu beachten, wenn der Status einer Person auf "N" steht, daher sind diese in der Zeildatei rot eingefärbt!
Ich konnte, ich konnte das aufklären.
Und freue mich auf die Aufklärung zur Sortierung des zweiten Tabellenblatts.
Großes Dankeschön auf jeden Fall mal.
Schönen Sonntagabend noch
rapperzahn
Antwort 14 von Saarbauer
Hallo,
zur übernahme in das Blatt "Details" hatte ich noch nichts gemacht, da erstmal zu klären war ob das überhaupt so geht / deinen Vorstellungen entspricht.
DSesweiteren wäre zu klären welche Daten aus Dem Blat erhalten werden, da nacht alle Angaben in dem Blatt woanders zu finden sind.
Ware mit einem ähnlichen Makro wie oben zu machen
Gruß
Helmut
zur übernahme in das Blatt "Details" hatte ich noch nichts gemacht, da erstmal zu klären war ob das überhaupt so geht / deinen Vorstellungen entspricht.
DSesweiteren wäre zu klären welche Daten aus Dem Blat erhalten werden, da nacht alle Angaben in dem Blatt woanders zu finden sind.
Ware mit einem ähnlichen Makro wie oben zu machen
Gruß
Helmut
Antwort 15 von rapperzahn
Moin Moin,
okay. Ich habe mich jetzt mal mit dem Makro intensiv auseinander gesetzt.
Sehe ich das richtig, dass du die Daten aus der Quelle in die Zieldatei reinkopierst und da dann noch den alten Rank mit dem Datensatz verknüpfst? Schade ist nur, dass halt die Farben nicht erhalten bleiben. Das gleiche gilt für die Notizen. Beides wäre schon cool, wenn es erhalten bleiben würde.
Bei dem Tabellenblatt "Details" ist nämlich wieder dasselbe. Dort stehen ja Daten, die sich über die Zeit angesammelt haben und somit nirgends stehen- außer halt in dieser einen Liste.
_________________
Ich habe dann mal dein Makro als Ideengrundlagen genommen und meine Vorstellungen miteingebracht. Herausgekommen ist folgendes:
Der Vorteil ist halt, das die vorhandenen Farben erhalten bleiben und auch die Notizen.
Jetzt müssen nur noch die neuen Datensätze eingereiht werden. Wie mache ich das? Da bräuchte ich wieder deine/eure Hilfe.
Und zwar habe ich mal so eine Art Ideenmakro geschrieben, sprich ich hoffe, ihr könnt meine Idee erkennen und meine Fehler rausbauen. Ich habe nämlich keine Ahnung wie man das macht, also hier der (nicht funktionsfähige) Code:
Dieser Code soll dann oben in den Code eingesetzt werden (die Stelle habe ich ja markiert.
Vielen Dank nochmals und Danke auch für die Geduld ;-)
rapperzahn
okay. Ich habe mich jetzt mal mit dem Makro intensiv auseinander gesetzt.
Sehe ich das richtig, dass du die Daten aus der Quelle in die Zieldatei reinkopierst und da dann noch den alten Rank mit dem Datensatz verknüpfst? Schade ist nur, dass halt die Farben nicht erhalten bleiben. Das gleiche gilt für die Notizen. Beides wäre schon cool, wenn es erhalten bleiben würde.
Bei dem Tabellenblatt "Details" ist nämlich wieder dasselbe. Dort stehen ja Daten, die sich über die Zeit angesammelt haben und somit nirgends stehen- außer halt in dieser einen Liste.
_________________
Ich habe dann mal dein Makro als Ideengrundlagen genommen und meine Vorstellungen miteingebracht. Herausgekommen ist folgendes:
Sheets("MASTER").Select
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Range("A1").Select
ActiveCell.FormulaR1C1 = "Rank" & Chr(10) & "NEU"
With ActiveCell.Characters(Start:=1, Length:=8).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Cells.Select
Range("A2").Activate
Sheets("DETAILS").Select
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Columns("D:D").Select
Selection.Delete Shift:=xlToLeft
Sheets("MASTER").Select
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Range("A2").Select
Sheets("DETAILS").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "Rank" & Chr(10) & "NEU"
With ActiveCell.Characters(Start:=1, Length:=8).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
' ETWA HIER SOLLTE DER TEIL DANN VON DEM ZWEITEM CODE REIN
Range("A2").Select
ActiveCell.FormulaR1C1 = "=MATCH(MASTER!RC[2],[quelle.xls]Sheet1!C2,0)"
ActiveCell.FormulaR1C1 = "=MATCH(MASTER!RC[2],[quelle.xls]Sheet1!C2,0)-1"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A11"), Type:=xlFillDefault
Range("A2:A11").Select
Range("A1").Select
Sheets("MASTER").Select
ActiveCell.FormulaR1C1 = "=MATCH(RC[2],[quelle.xls]Sheet1!C2,0)"
ActiveCell.FormulaR1C1 = "=MATCH(RC[2],[quelle.xls]Sheet1!C2,0)-1"
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A11"), Type:=xlFillDefault
Range("A2:A11").Select
Range("A1").Select
Sheets("DETAILS").Select
Range("A1:N11").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
Sheets("MASTER").Select
Range("A1:H11").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
Sheets("MASTER").Select
Sheets(1).Select
zahl = 1
Do While zahl < 12
zahl = zahl + 1
If Worksheets(1).Cells(zahl, 2).Interior.ColorIndex = 43 Then
Worksheets(1).Cells(zahl, 1).Interior.ColorIndex = 43
End If
If Worksheets(1).Cells(zahl, 2).Interior.ColorIndex = 6 Then
Worksheets(1).Cells(zahl, 1).Interior.ColorIndex = 6
End If
If Worksheets(1).Cells(zahl, 2).Interior.ColorIndex = 34 Then
Worksheets(1).Cells(zahl, 1).Interior.ColorIndex = 34
End If
If Worksheets(1).Cells(zahl, 2).Interior.ColorIndex = 54 Then
If Worksheets(1).Cells(zahl, 3).Interior.ColorIndex = 43 Then
Worksheets(1).Cells(zahl, 1).Interior.ColorIndex = 43
End If
If Worksheets(1).Cells(zahl, 3).Interior.ColorIndex = 6 Then
Worksheets(1).Cells(zahl, 1).Interior.ColorIndex = 6
End If
If Worksheets(1).Cells(zahl, 3).Interior.ColorIndex = 34 Then
Worksheets(1).Cells(zahl, 1).Interior.ColorIndex = 34
End If
End If
Loop
Sheets(2).Select
zahl = 1
Do While zahl < 12
zahl = zahl + 1
If Worksheets(2).Cells(zahl, 2).Interior.ColorIndex = 43 Then
Worksheets(2).Cells(zahl, 1).Interior.ColorIndex = 43
End If
If Worksheets(2).Cells(zahl, 2).Interior.ColorIndex = 6 Then
Worksheets(2).Cells(zahl, 1).Interior.ColorIndex = 6
End If
If Worksheets(2).Cells(zahl, 2).Interior.ColorIndex = 34 Then
Worksheets(2).Cells(zahl, 1).Interior.ColorIndex = 34
End If
If Worksheets(2).Cells(zahl, 2).Interior.ColorIndex = 54 Then
If Worksheets(2).Cells(zahl, 3).Interior.ColorIndex = 43 Then
Worksheets(2).Cells(zahl, 1).Interior.ColorIndex = 43
End If
If Worksheets(2).Cells(zahl, 3).Interior.ColorIndex = 6 Then
Worksheets(2).Cells(zahl, 1).Interior.ColorIndex = 6
End If
If Worksheets(2).Cells(zahl, 3).Interior.ColorIndex = 34 Then
Worksheets(2).Cells(zahl, 1).Interior.ColorIndex = 34
End If
End If
Loop
Sheets(1).Select
Range("A1:A11").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Range("A1").Select
Sheets("DETAILS").Select
Range("A1:A11").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Range("A1").Select
Sheets("MASTER").SelectDer Vorteil ist halt, das die vorhandenen Farben erhalten bleiben und auch die Notizen.
Jetzt müssen nur noch die neuen Datensätze eingereiht werden. Wie mache ich das? Da bräuchte ich wieder deine/eure Hilfe.
Und zwar habe ich mal so eine Art Ideenmakro geschrieben, sprich ich hoffe, ihr könnt meine Idee erkennen und meine Fehler rausbauen. Ich habe nämlich keine Ahnung wie man das macht, also hier der (nicht funktionsfähige) Code:
Count = 1
Do While zahl < 12
Count = Count + 1
cound = 2
Do While cound < 12
If Windows("quelle.xls").cell(Count, 2) <> Windows("ziel.xls").cell(cound, 2) Then
If cound = 11 Then
Sheets("DETAILS").Select
Rows("13:13").Select
Selection.Insert Shift:=xlDown
Sheets("MASTER").Select
Rows("13:13").Select
Selection.Insert Shift:=xlDown
Else
cound = cound + 1
End If
Else
'KOPIEREN DER ZELLEN IN DIE PASSENDEN NEUEN ZELLEN VON QUELLE IN ZIEL- DATEI (MASTER+ DETAILS)' DIESER PART MÜSSTE NOCH UMGESETZT WERDEN! ABER DA HABE ICH KEINE AHNUNG!
End If
Loop
LoopDieser Code soll dann oben in den Code eingesetzt werden (die Stelle habe ich ja markiert.
Vielen Dank nochmals und Danke auch für die Geduld ;-)
rapperzahn
Antwort 16 von Saarbauer
Hallo,
mal für die Tabelle Ziel / Master ein Makro
Rot habe ich mit eingebaut, lila dazu fehlen hier einfach angaben
Für die Tabelle Details fehlen auch noch Angaben, da mir nicht klar ist wo die Daten, die nicht aus der Quelle sind herkommen
Gruß
Helmut
mal für die Tabelle Ziel / Master ein Makro
Sub Makro1()
Windows("quelle.xls").Activate
Rows("1:11").Select
Selection.Copy
Windows("ziel.xls").Activate
Range("A15").Select
ActiveSheet.Paste
Range("O16").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""N"""
Selection.FormatConditions(1).Interior.ColorIndex = 3
Range("O16").Select
Selection.Copy
Range("O16:O25").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
For i = 16 To 25
If Range("C" & i).Value = "Powerseller" Then
Range("A" & i & ":R" & i).Select
Selection.Interior.ColorIndex = 43
Else
If Range("C" & i).Value = "Profi" Then
Range("A" & i & ":R" & i).Select
Selection.Interior.ColorIndex = 6
Else
If Range("C" & i).Value = "Seller" Then
Range("A" & i & ":R" & i).Select
Selection.Interior.ColorIndex = 34
End If
End If
End If
Next i
Range("B15:B25").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Range("D15:E25").Select
Selection.Delete Shift:=xlToLeft
Range("F15:L25").Select
Selection.Delete Shift:=xlToLeft
Range("G15:G25").Select
Selection.Insert Shift:=xlToRight
For i = 16 To 25
Range("G" & i).Value = Date - Range("J" & i).Value
Next i
Range("G16:G25").Select
Selection.NumberFormat = "yy"
Range("I15:K25").Select
Selection.Delete Shift:=xlToLeft
Range("I19").Select
For i = 16 To 25
For j = 2 To 11
If Range("C" & i).Value = Range("C" & j).Value Then Range("B" & i).Value = Range("A" & j)
Next j
Next i
Range("A1").Select
Range("A1").Cut Destination:=Range("B1")
Rows("2:15").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "Rank"
Range("A1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
End SubRot habe ich mit eingebaut, lila dazu fehlen hier einfach angaben
Für die Tabelle Details fehlen auch noch Angaben, da mir nicht klar ist wo die Daten, die nicht aus der Quelle sind herkommen
Gruß
Helmut
Antwort 17 von rapperzahn
Moin Moin,
vielen Dank für eure Mühe! Ich danke besoners dir, Saarbauer. Ich habe praktisch zeitgleich auch mein Makro fertig geschrieben.
Das obige meinige Makro habe ich dabei weiterentwickelt. Wenn jemand Interesse an meiner Lösung hat, einfach posten. Meine Lösung löscht dabei keine vorhandenen Informationen in den hinteren Spalten der "DETAILS".
NOCHMALS VIELEN DANK SAARBAUER FÜR DIE UNTERSTÜTZUNG!
Viele Grüße
rapperzahn
vielen Dank für eure Mühe! Ich danke besoners dir, Saarbauer. Ich habe praktisch zeitgleich auch mein Makro fertig geschrieben.
Das obige meinige Makro habe ich dabei weiterentwickelt. Wenn jemand Interesse an meiner Lösung hat, einfach posten. Meine Lösung löscht dabei keine vorhandenen Informationen in den hinteren Spalten der "DETAILS".
NOCHMALS VIELEN DANK SAARBAUER FÜR DIE UNTERSTÜTZUNG!
Viele Grüße
rapperzahn
Antwort 18 von Saarbauer
Hallo,
nur ein kleiner Hinweis:
Ich weiss zwar nicht wie du die Makros entwicklst, ich aber zeichne meist mir ein Makro auf und ergänze es dann mit den nicht aufzeichenbaren Funktionen.
Ausserdem recht herzlichen Dank für die Rückmeldung, kommt leider zu selten vor. Nur über diesen Weg erhält der Helfer Informationen ob seine Idee brauchbar war.
Gruß und schönes Wochenende
Helmut
nur ein kleiner Hinweis:
Ich weiss zwar nicht wie du die Makros entwicklst, ich aber zeichne meist mir ein Makro auf und ergänze es dann mit den nicht aufzeichenbaren Funktionen.
Ausserdem recht herzlichen Dank für die Rückmeldung, kommt leider zu selten vor. Nur über diesen Weg erhält der Helfer Informationen ob seine Idee brauchbar war.
Gruß und schönes Wochenende
Helmut

