Makro zur Sortieren von Excel Tabelle?

5 Antworten

Dazu müsstest du über ein Makro so viele Eventualitäten hinterlegen, dass es sich eher lohnt über einen neuen Aufbau der Tabelle nachzudenken.

SteinernesHerz 
Fragesteller
 14.11.2018, 11:05

Das geht leider nicht. Es muss die gleiche Tabelle bleiben

Kann ich nicht irgendwie Zeile B1 bis AP1 auf A1 fixieren

B2 bis AP2 auf A2 etc.

sodass diese auch zusammen bleiben wenn in Zeile A1 plötzlich ein neuer Mitarbeiter steht?

0

Das geht mit Formeln, wenn man weiß, in welchen (für die Übernahme relevanten) Spalten was steht. Leider geht das auf Deinem Beschrieb nicht hervor. Ausserdem braucht man den Namen des "Gesamt"blattes und den eines MA-Blattes (einer genügt, ein Fake sowieso). Andernfalls müsstest Du mühsam umformulieren.

Also liefere das bitte nach.

Dass da U steht, ist xl egal, das ist hier keine relevante Info. da kann auch blöd stehen oder politisch korrekt- Südseekönig - es wird übernommen,

  1. Hauptblattname, darin
  2. Spalte Familienname (Zeile von-bis incl.)
  3. falls in separater Spalte und zur Identifikation wichtig-Vorname-
  4. 2 und 3 könnten ersetzt werden durch immer die eindeutige Personalnr.
  5. wenn das Datum in Zeile steht, von wo bis wo? (ich gehe davon aus, dass die namen untereinander gelistet sind, die Monatstage -in welcher Form?*- in einer Kopfzeile. Wenn anders, bitte beschreiben!
  6. Zielblattname zur Erleichterung des Beschriebs, nicht essentiell

*)Sollten Jahr und Monat in separaten Zellen stehen, auch deren Ort und das verwendete Format (Texteintrag bei Monat, Zahleintrag bei Jahr und Tag oder -einfacher- formatiertes Datum

Wieviele Monate umfasst das Hauptblatt? Jahr ab 1.Jan oder ab Beginn Geschäftsjahr, zB 1. Okt. Vorjahr?

Ich hoffe, ich hab jetzt alles abgefragt.

SteinernesHerz 
Fragesteller
 14.11.2018, 18:35

Würde dir eine Beispieldatei mit Dummy Namen/Daten helfen?

0
SteinernesHerz 
Fragesteller
 14.11.2018, 18:38

Die Daten die manuell eingetragen werden, die sortieren sich nicht mit

0
Iamiam  14.11.2018, 20:42
@SteinernesHerz

Dummydatei nützlich, 3 Dummynamen im Hauptblatt, mehrere Datümer (falls Monatswechsel drin , eingeschlossener Monat + beide Nachbar-Monatsrudimente, ein Namensblatt genügt.

aber die Daten werden doch nur im Hauptblatt sortiert und dort sortieren sie sich doch hoffentlich mit? Ich kenne es nicht anders oder hast Du einen zu kleinen Bereich markiert vorm sortieren?

Und dass sie sich in den Namensblättern nicht mitsortieren kommt wahrscheinlich daher, dass Du Bezüge vom Typ =Hauptblatt!A1 drin hast, dafür brauchst du eben andere Formeln (so hab ichs bisher verstanden)

0
SteinernesHerz 
Fragesteller
 14.11.2018, 20:43
@Iamiam

Kann ich die Datei hier irgendwo einstellen oder so? So lässt es sich bestimmt besser beschreiben/erklären

0

Hört sich so an als gäbe es bereits ein Makro das irgendetwas tut.
"Wenn jetzt aber Anfang Feburar ein Neuer Mitarbtier dazu kommt und der auf der ersten Seite eingetragen wird, sortiert sich zwar der Name und die Personelnummer etc. Aber auf den Listen mit den Monaten sortieren sich die bereits eingetragenen Urlaubstage nicht mit"
Dies bedeutet, das der neue Name wohl auf die weiteren Monatsblätter eingefügt wird aber die Sortierung (wohl VBA) nur auf den Verwaltungsdaten arbeitet und NICHT über alle Spalten die zu einem Namen gehören.
Dies sollte man beheben indem man den Sortierbereich über alle Spalten erweitert, ggf mit weiteren Reserve Spalten. (Vielleicht wollt ihr zu Namen noch weitere Dinge merken).Also im Code nach der Sortierung suchen die so ähnlich aussehen könnte und den Range über alle Spalten, die ebenfalls zu sortieren sind,  erweitern:

   Worksheets("A").Sort.SortFields.Clear
   Worksheets("A").Sort.SortFields.Add Key:=Range("A1:A400" _
       ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   With Workbooks(mdTool.curWB).Worksheets("PPT_Report").Sort
       .SetRange Range("A1:Z400")
       .Header = xlNo
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With

Naja. Excel aufmachen. ALT dann F11 drücken und schauen wo der Code steht der dies durchführt. Links stehen die verschiedenen Tabellenblätter. Mal Doppelklicken auf welches die Namen eingegeben werden. Nach Eingabe wird ggf ein Worksheet Change Event programmiert sein.

SteinernesHerz 
Fragesteller
 14.11.2018, 20:14

Ich kenne den Code dafür aber nicht. Ich weiß schon, dass das mit Alt und F11 geht um das zu öffnen. Aber der Code den du mir gegeben hast klappt nicht. Die Frage "Und wie mach eich das" war darauf bezogen wie ich eine Beispieldatei einstelle

0
IchMalWiederXY  14.11.2018, 20:21
@SteinernesHerz

Der Code ist ein Bsp Code. Du hast wahrscheinlich kein Blatt welches "A" heißt (oder die sonstigen Variablen die ich nicht angepasst habe) und damit gibt es Fehler. Du musst die Sortierung in deinem Makro suchen und dann den Bereich .SetRange ÜBER alle Daten erweitern.

0
SteinernesHerz 
Fragesteller
 14.11.2018, 20:22
@IchMalWiederXY

Okay also A steht für den Namen des Blattes?

Und wie passe ich die Variablen an? Kann ich die Datei hier irgendwo reinstellen?

0
IchMalWiederXY  14.11.2018, 20:27
@SteinernesHerz

Worksheets("DeinTabBlattName").Sort.SortFields.Clear

   Worksheets("DeinTabBlattName").Sort.SortFields.Add Key:=Range("A1:A400" _

       ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

   With Worksheets("DeinTabBlattName").Sort

0
SteinernesHerz 
Fragesteller
 14.11.2018, 20:32
@IchMalWiederXY

Klappt immer noch nicht :-(

Du scheinst davon wirklich was zu verstehen, kann ich dir die Musterdatei schicken?

0
IchMalWiederXY  15.11.2018, 12:07
@SteinernesHerz

Hallo, Ich habe wirklich schon Arbeit genug. Irgendeiner muss doch das bisherige Makro, welches du gerbt hast programmiert haben in deiner Firma. Die nötige Erweiterung sollte für diese Person einfach sein.
  Du selbst hast mit VBA nun wohl die ersten Schritte gemacht, dann ist es natürlich schwierig, unter anderem weil Software immer mehrere Lösungen möglich macht. Angenommen ich bring das für dich zum Laufen und es gilt eine weitere Anpassung durchzuführen. Wer macht das dann ? Es ist wichtig, dass du selbst die Dinge verstehst, die in dieser Datei vorgehen.
 Je nach Arbeitsumfeld werden Makros beliebig komplex, wenn z.B.  Kollegen mit anderen Sprachen und Regional Settings Excel anders verwenden. Solche Dinge gilt es dann ebenfalls zu programmieren, damit es "jeder" der muss zuverlässig nutzen kann.

0
SteinernesHerz 
Fragesteller
 17.11.2018, 16:05
@IchMalWiederXY

Kann ich dir irgendwie eine PN schicken? Ich habe den Code jetzt soweit bekommen, dass ich bei Jahresübersicht alles direkt nach Alphabet sortiert.

Und im Januar erscheinen die Namen jetzt auch. Aber es soll auch im Februar, März etc. passieren. Das mit der Schleife (oder wie das heißt) klappt nicht.  

   

0

Die Kompletten Monatsblätter verdoppeln, dorthin den "alten Stand wegschreiben" und und sich dann über die Namen die entsprechenden Werte suchen und in die relevante Zeile reinschreiben.

Blatt neu: Karlheinz in Zeile 4.

Suche auf Blatt alt den Karlheinz, finde ihn in Zeile 3 und übertrage die Daten in Blatt neu Zeile 4.

SteinernesHerz 
Fragesteller
 14.11.2018, 11:50

Ja mit den Werten wie Resturlaub klappt das ja auch. Das Problem sind die Manuell eingetragenen Daten wie die U für Urlaub und dem K für Krank

0
augsburgchris  14.11.2018, 12:49
@SteinernesHerz

Ohne den exakten Aufbau deiner Tabelle genau(also inklusive aller Blätter und Formeln) zu kennen wird dir das keiner sagen können.

Wie gesagt mein Vorschlag lass dir was anderes einfallen oder baue die Tabellen anders auf. So wirst du nicht glücklich.

0
SteinernesHerz 
Fragesteller
 14.11.2018, 12:54
@augsburgchris

Das will die Personalabteilung aber nicht. im Moment setzen wir Neue Mitarbeiter einfach unten drunter. Die sind dann aber nicht mehr nach Alphabet.

0
SteinernesHerz 
Fragesteller
 14.11.2018, 13:07
@augsburgchris

Obwohl vielleicht würde die es sich ja anders überlegen, wenn ich ihnen eine GANZ TOLLE Alternative zeige

0