Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

Makro für

Makro für
03.07.2023 20:26:29
Christian

Hallo zusammen,

es geht um eine Mitarbeiterliste (Tabelle heißt "Aufträge"), welche für verschiedene Projekte und die jeweiligen Zeiträume entsenden werden.
Durch das Makro will ich alle schon verplanten MA aus der Liste sichtbar (zB. gelb markieren) machen, die für einen neuen Zeitraum (in der ausgewählten Zeile) verfügbar wären.

Anbei die wichtigen Informationen aus der Tabelle, die Liste beginnt ab Zeile 8.
G = Mitarbeiternummer (diese soll markiert werden), wenn leer dann überspringen
L = Kurzzeichen (zB. HU-234, HL-123, HT-543) -> es sollen nur die MA markiert werden, die zB. Kurzzeichen HU-234 haben
Q = Zeitraum - Start (Datum)
R = Zeitraum - Ende (Datum)

Ich hoffe ich habe nix vergessen.
Vielleicht kann mir jemand diesbezüglich mit einem Makro weiterhelfen ...

DANKE

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für
03.07.2023 20:48:58
Piet
Hallo

doch, am besten wäre eine Beispieldatei, mit vorgegebener Lösung von Hand. Es reichen 10-15 Zeilen mit Fantasiedaten.

Frage: - woher weiss ich dass das Zeichen HU-234 gesucht wird?? - Steht dieser Suchwert in einer Zelle??
Sollen nur die Mitarbeiter markiert werden, wo sich das Zeichen HU-234 in der Mitarbeiter Zeile befindet?
Sind deine Buchstaben G, L, Q, R die Spalten wo die entsprechenden Daten drin stehen?
Was ist mit Start- und End Datum? Muss da noch was berücksichtigt werden?

mfg Piet


AW: Makro für
04.07.2023 07:21:54
Christian
Hallo Piet,
anbei die die Datei https://www.herber.de/bbs/user/159803.xlsx
Das Kurzzeichen (HU-641) kann immer variieren, jedoch immer vorhanden und in Spalte L.
Ja genau, nur die Mitarbeiter ansprechen die das Kurzzeichen haben.
Start- / Enddatum muss nix weiter beachtet werden. Ist nur das Datum.

Für die Lücken in der Excel müssen zB. noch Mitarbeiter gesucht werden.
Die Idee ist, bevor neue gesucht werden, soll die Abfrage die vorhandenen MA (die das Kurzzeichen HU-641 haben) abfragen, ob sie vom Datum her, auch eingesetzt werden könnten.


Anzeige
AW: Makro für
04.07.2023 13:34:45
Yal
Hallo Christian,

deine Erklärung und dein Beispiel sind nicht ausreichend, um überhaupt verstehen, was Du haben möchtest.
Was sind die HU-234 oder HU-641? Mitarbeiternummer? Warum haben dann verschiedene Mitarbeiter alle dieselbe Nummer?
Beispieldaten jederzeit gern, aber nur wenn diese einen Sinn ergeben.
Computer lassen sich nicht mit einem "vielleicht" oder "ich glaube" programmieren.

VG
Yal


AW: Makro für
04.07.2023 14:49:52
Christian
Hallo Yal,
die HU-641 ist ein Kurzzeichen bzw. Abteilung, welche verschiedene Projekte betreibt. Alle Mitarbeiter die in der Liste stehen, sind zwar in verschiedenen Projekten, doch in der selben Abteilung. Natürlich gibt es hier auch andere Abteilungen. Für das Beispiel habe ich jedoch nur diese drin. Die Abfrage bzgl. Abteilung ist deswegen relevant, weil ich nur die Mitarbeiter da einsetzten will, die schon in der Abteilung tätig waren/sind)

Ich hoffe das Bild macht es etwas deutlicher.
Userbild

Wenn ich ein neues Projekt habe und ich noch einen MA suche, soll das Makro folgende Schritte durchgehen:
01. Ich markiere eine Zeile wo ich noch keinen MA hab, dann betätige ich einen Button
02. Der Zeitraum für das Projekt aus ausgewählter Zeile (Q-R) wird gesucht
03. Abgleich mit Abteilung (L) - also nur die MA die schon in der Liste bei dieser Abteilung sind/waren werden herangezogen
04. Sobald ein MA im gesuchten Zeitraum Zeit hätte, also keine Überschneidung von Datum, sollen die MA-Nummern (Spalte G) gelb markiert werden.
05. Dann kann man den MA zB für einen weiteren Zeitraum einteilen


Anzeige
AW: Makro für
05.07.2023 15:03:36
Yal
Hallo Christian,

Bei der Frage nach einer vollständigen Lösung mache ich meistens einen Bogen, aber in dem Fall hat mir die Fragestellung gekitzelt: kein ganz einfache Frage. Oder doch?

Folgende Lösung:
Public Sub Mitarbeiter_finden()
Dim Z
Dim Abt As String
Dim Start As Date
Dim Ende As Date
Dim dic As Object
Dim Elt
Dim Frei As Boolean
    
    If ActiveSheet.Name > Me.Name Then Exit Sub 'nur aktion, wenn auf "Aufträge"
            
    Abt = ActiveCell.EntireRow.Range("L1") 'relative Adresse: die betrachtete Zeile ist immer die 1
    If Abt = "" Then Exit Sub 'wenn die Zeile keine Abteilung enthält, einfach aussteigen
    
    Start = CDate(ActiveCell.EntireRow.Range("Q1").Value)
    Ende = CDate(ActiveCell.EntireRow.Range("R1").Value)
    With Range(Range("L8"), Cells(Rows.Count, "L").End(xlUp))
        .Offset(, -5).Interior.Pattern = xlNone  'Reset alle Farbmarkierung
    'Information über die MA der Abt sammeln
        Set dic = CreateObject("Scripting.Dictionary")
        For Each Z In .EntireRow ' Z ist hier eine Zeile. A1 ist die Zelle in erste Spalte davon
            If Z.Range("L1").Value = Abt And Z.Range("G1").Value > "" Then
                dic(Z.Range("G1").Value) = dic(Z.Range("G1").Value) & ";" & Z.Range("Q1").Value & "-" & Z.Range("R1").Value
            End If
        Next
    End With
'Verfügbarkeit pro Mitarbeiter prüfen
    For Each Elt In dic.keys
        Frei = True
        For Each Z In Split(Mid(dic(Elt), 2), ";")
            Frei = Frei And (Start > CDate(Split(Z, "-")(1)) Or Ende  CDate(Split(Z, "-")(0)))
        Next
        If Frei Then SucheUndMarkiere Elt
    Next
End Sub

Private Sub SucheUndMarkiere(ByVal MitarbeiterCode As String)
Dim Z As Range
    For Each Z In Range(Me.Range("G8"), Me.Cells(Rows.Count, "G").End(xlUp))
        If Z.Value = MitarbeiterCode Then
            With Z.Interior
                .PatternColorIndex = xlAutomatic
                .Color = 5287936
                If Z.Value = MitarbeiterCode Then .Pattern = xlSolid
            End With
        End If
    Next
End Sub
Die für die betrachtenen Phase freie Mitarbeiter werden grün markiert.
Du kannst eins Schaltfläche einbauen und das Makro zuweisen, Du kannst aber auch Alt+F8 (Makroauswahl) und weil keine andere Makro vorhanden ist, sofort Enter drücken.
Deine Beispieldatei ist auch nicht besonders hilfreich. Ich habe eine gekürzte Version gebaut.
https://www.herber.de/bbs/user/159809.xlsm

VG
Yal

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige