Anpassung des Codes um Zeitdaten aufzubereiten
#1
Guten Morgen zusammen,


Ich habe mir laienhaft etwas gebastelt, damit ich die aus dem System gezogenen Zeitdaten aufbereiten und anschließend im System 
richtig formatiert per copy and paste einfügen kann.

Das funktioniert auch sehr gut. Allerdings ist mir nun aufgefallen, dass wenn ich Werte unter 0 habe, weil die Mitarbeiter ja auch mal eher gehen und 
dadurch Minusstunden machen für den Tag. Diese Minuswerte dürfen nicht von der Gesamtsumme abgezogen werden.

Zur Funktion:
Ich füge die Daten in Excel wie in der Datei ein.
Drücke dann auf Schritt 1, dann Schritt 2 und dann kann ich die Daten aus dem Sheet "Schnellerfassung" einfach per copy and Paste ins System einfügen.
Natürlich sind es eigentlich mehr als ein Mitarbeiter, aber das ist hier ja nun egal, wichtig ist die Summe.
Diese darf nämlich nicht 4,58 sein (Hier werden Samstage und Sonntage nicht mit gezählt, sondern nur Mo-Fr) sondern das richtige Ergebnis wäre 5,8 (Minuswerte und Samstage + Sonntage werden nicht gezählt)

Kann mir jemand die Makros so anpassen, dass am Ende die gewünschten 5,8 rauskommen und nicht die 4,58?

EDIT: Meine eigentliche Idee war es, ein Makro aufzuzeichnen, dass über ein Wennformel in Spalte H einfach die Werte unter Null raussucht, und als Null wieder gibt und dann anschließend einfach der Bereich kopiert wird und dann eingefügt wird und die "original" werte überschreibt, das Makro hat aber jedes mal die Werte gelöscht statt sie einzufügen, so das dann Spalte G immer leer war danach.

Wäre aber vermutlich auch schwierig, da ich ja immer unterschiedliche viele Personen in der Auswertung habe und nicht nur die paar wie nun im Beispiel.


.xlsm   Manuelle Genehmigung Überstundenzuschläge.xlsm (Größe: 28,77 KB / Downloads: 6)


Vielen Dank für eure Hilfe!
Antworten Top
#2
Hallo,

es ist immer ungünstig, wenn der Fragesteller versucht, die Helfer zur Verwendung einer bestimmten Arbeitsweise zu bewegen. Beschreibe doch bitte mal, was genau du erreichen willst. Die Verwendung von drei (aufgezeichneten) Makros nacheinander, ist nicht besonders professionell. Aufgezeichnete Makros entsprechen in aller Regel nicht dem, was mit VBA möglich ist.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Moin Klaus-Dieter,

das dies sehr unprofessionell ist, ist mir bewusst, aber bis dato funktionierte es und ich konnte mir erstmal selber helfen.

Also die Ausgangslage:

Ich ziehe Daten im Format und Aufbau wie im Sheet "Import"
Diese sind vom Aufbau her immer gleich, lediglich die Anzahl der Zeilen variiert je nach Anzahl der Mitarbeiter oder Tage.

In der Tabelle "Export" sollen die Daten nun genau so aufbereitet werden, dass ich hier die Daten einfach per copy + paste ins System einfügen kann, deswegen auch die Leerspalte in E.
Jeder Mitarbeiter darf hier dann nur noch 1x mit seiner Gesamtsumme auftauchen.

Berücksichtigt in der Summe (Betrag) muss folgendes:

1. Es dürfen nur Stunden von Montag bis Freitag in die Summe einfließen
2. Samstage und Sonntage werden entsprechend niemals berücksichtigt
3. Werte unter 0 dürfen nicht mit in die Berechnung einfließen.

Beispiel: Mitarbeiter Max

01.12.24 = 2,25
02.12.24 = 1,15
03.12.24 = 3,35
04.12.24 = -2,19

Summe = 4,50

Weil Minuswerte und Samstag/Sonntag nicht einfließen darf


Das Non-Plus-Ultra wäre folgendes:

Wenn man einen monatsübergreifenden Zeitraum hätte wie jetzt hier im Beispiel (November, Dezember)
wäre es super, wenn sowas berücksichtigt werden könnte.

Bedeutet: In der Tabelle in "Export" darf der Mitarbeiter nur einmal mit dem Wert aus November auftauchen und z. B. in einer weiteren Tabelle die genauso aufgebaut ist, wären dann die Werte aus Dezember.
Alternativ kann man das vielleicht auch einfach über eine Auswahlmöglichkeit wie Januar, Februar, März...etc. in nur einer Tabelle darstellen. Aber das wäre wie gesagt nur die Kirsche auf der Torte.

Wenn das nicht möglich ist, reicht es, wenn man einfach nur die Summen wie oben beschrieben aufaddiert und in der Tabelle aus Export darstellt.

Dann achte ich beim Import der Daten manuell, dass ich immer nur einen Monat habe und nichts übergreifendes.

Das ganze soll dann einfach durch einen Button realisiert werden können bzw. aufbereitet werden können.


Anmerkung: Bei den Namen ist leider immer beim Import aus SAP ein Haufen an Leerzeichen nach dem Nachnamen. Das bekomme ich so leider nicht weg, nur falls das irgendeine Relevanz hat.
Habe ich nun nicht überall drin, da die Daten anonymisiert wurden.


.xlsx   csv.xlsx (Größe: 12,76 KB / Downloads: 3)
Antworten Top
#4
Hallo

ich habe mir die lange letzte Antwort noch nicht durchgelesen, könnte sein das es das Makro verändert??
Hier mal deine 1. Beispieldatei mit einer "simpel Lösung" zurück.  Du wirst zu der Idee überrascht sein.

Ich wette das du deinen aufgezeichneten Code nicht mehr wieder erkennst.  Ich habe ihn von Select bereinigt.
Musst du aber bitte gründlich prüfen ob die Änderung einwandfrei in Ordnung ist.  Ich bin auch nur ein Mensch.
Unklar ist mir, was du im Schritt2 machst??  Da wird nur die Zelle H21 in Zwischenschritt kopiert, Spalten gelöscht.
Bedenke bitte das bei ActiveSheet.Paste die Kopie in die gerade aktivierte Zelle erfolgt! Das kann jede Zelle sein!
Besser ist es mit Range().PasteSpecial diese Zelle genau festzulegen.

Zur Lösung:
es gibt m.E. zwei "Simpel Lösungen", beide siehst du im Code ausgeführt.  Welche du nimmst ist dein Bier.
Du kannst den -Betrag als + Betrag in eine Hilfsspalte I schreiben, und am Schluß in der Summe dazuzählen.
Du kannst auch den Betrag durch vorgestelltes ' Zeichen in Text umwandeln, dann wird er NICHT addiert.

Den Rest mit der CSV Datei habe ich noch nicht gelesen, mal sehen was mir dazu noch einfällt.
Kann aber sein das ich erst morgen dazu komme, habe heute noch privat was zu tun.

mfg Gast

Nachtrag    ich habe den Code auf LastZell=lz1 umgestellt, es ist immer schwierig die letzte Zeile mit 1047 festzulegen.
Wenn dann der Datenbereich mal länger wird stimmt die ganze Berechnung nicht mehr. Endzeile ist jetzt unbegrenzt.


Angehängte Dateien
.xlsm   Manuelle Genehmigung Überstundenzuschläge.xlsm (Größe: 28,26 KB / Downloads: 4)
Antworten Top
#5
Hallo

da bin ich wohl schneller als eine Antwort kommt.  Auf ein neues, neue Beispieldatei.

Beide Dateien -müssen geöffnet- sein, CSV und diese Datei!  Dann geht alles automatisch.
Die CSV Daten werden komplett in Rohdaten kopiert, eine Kopie in Tabelle Zwischenschritt.
Nach dem Filtern der Daten werden alle Zeilen mit -Beträge gelöscht.

Falls die Leerstellen hinter dem Namen stören kann ich die auch noch löschen. Habs vergessen! 
Dazu muss in die For Nex Schleife nur eine Zeile eingefügt werden, Hinter Rows().Delete.
          .Rows(j).Delete shift:=xlUp
          .Cells(j, 7) = Trim(.Cells(j, 7))

mfg Gast 123


Angehängte Dateien
.xlsm   Genehmigung Überstundenzuschläge 2.xlsm (Größe: 37,25 KB / Downloads: 4)
Antworten Top
#6
Hallo,

vielen Dank schon einmal :)

Muss ich später testen, durch den Datenschutz kann ich die Dateien auf der Arbeit nicht downloaden.

Melde mich morgen im Laufe des Tages :)
Antworten Top
#7
Hallo

okay, freut mich, höfliche Bitte.  Den 1. Test bitte NICHT in der Originaldatei durchführen, besser in einer Kopie.

Ich klann nicht garantieren das alles einwandfrei funktioniert.  Eine Kopie Datei bietet uns Schutz vor Datenverlust.

mfg Gast 123
Antworten Top


Gehe zu:


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