Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabelle nach Mitarbeiter teilen und neue Dateien erzeugen
#1
Hallo Zusammen,

ich habe eine Tabelle in der Equipments gelistet sind. Jede Zeile ist eine Maschine.
In Spalte A steht der verantwortliche Außendienstmitarbeiter für Produktsparte ETI.
In Spalte B steht der verantwortliche Außendienstmitarbeiter für Produktsparte COD.

Ich möchte aus der Gesamtliste für jeden Mitarbeiter eine einzelne Datei mit seinen Maschinen im Markt erzeugen. Diese soll wie folgt heißen IB_Personalnummer (bspw. "IB_800" "IB_801" etc.)

Bsp.: Eine Datei soll erzeugt werden wo alle Maschinen für den Mitarbeiter Nr. 800 stehen und so weiter.
Anschließend für die Produktsparte COD, wo die Mitarbeiter Nr. in Spalte B stehen.

Ich habe es mit Makros probiert, aber meine Kenntnisse sind nicht gut genug leider.
die Datei wird jeden Monat erstellt und der manuelle Aufwand das für zich Mitarbeiter zu machen steht in keinem Verhältnis.

Ich wäre für eure Hilfe super Dankbar. Ich weiß das es sich mit Makros lösen lassen kann, ich habe auch einiges gelesen aber hinbekommen tue ich es nicht.

Beste Grüße
Phil


Angehängte Dateien
.xlsx   EquipmentMitarbeiter.xlsx (Größe: 11,38 KB / Downloads: 6)
Antworten Top
#2
Hi,

und was machst Du dann mit den Dateien? Anschauen? Ausdrucken? Das kannst Du auch, wenn Du einen stinknormalen Filter oder Datenschnitt verwendest, statt unnötig viele Dateien zu generieren....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
Hallo Ralf,

die werden dem Mitarbeiter zur Verfügung gestellt und per Mail an ihn versandt.
Der Mitarbeiter soll auch nur Zugriff auf seine eigenen Maschinen haben.

Gruß
Phil
Antworten Top
#4
Hi,

wenn du in Y2 deine Mitarbeiter-Nr schreibst, bekommst du bei aktuellem Excel mit
=FILTER(Tabelle1;(Tabelle1[VB-ETI]=$Y$2)+(Tabelle1[VB-IJ]=$Y$2)+(Tabelle1[VB-LAS]=Y2))
alle Zeilen in denen in A, B oder C dieser Mitarbeiter auftaucht.

Wenn du kein aktuelles Excel hast, verwendest du entweder das CSE-Addin von Flotter Feger oder Excel-Online.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#5
Moin, 19 

per VBA hier eine Möglichkeit (getestet in deiner Beispieldatei): 21
Code:
Option Explicit
Public Sub Main()
    Dim wksSheet As Worksheet
    Dim strTMP As String
    Const lngColumn As Long = 1
    On Error GoTo Fin
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set wksSheet = Worksheets.Add(After:=Tabelle1)
    With wksSheet
        Tabelle1.UsedRange.Copy .Cells(1, 1)
        .UsedRange.Sort Key1:=.Cells(1, lngColumn), Order1:=xlAscending, Header:=xlYes
        Do
            strTMP = .Cells(2, lngColumn).Value
            If strTMP = "" Then Exit Do
            .UsedRange.AutoFilter Field:=lngColumn, Criteria1:=strTMP
            With Workbooks.Add
                wksSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy .Sheets(1).Cells(1, 1)
                .SaveAs "C:\Temp\" & strTMP & "_" & Format(Now, "yyyy_mm_dd"), 51
                .Close
            End With
            .UsedRange.Offset(1, 0).EntireRow.Delete
        Loop
        wksSheet.Delete
    End With
Fin:
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & " " & Err.Description
End Sub 

Speicherpfad noch anpassen. Blush
________
Servus
Case
Antworten Top
#6
(08.09.2023, 12:10)Philly schrieb: die werden dem Mitarbeiter zur Verfügung gestellt und per Mail an ihn versandt.
Der Mitarbeiter soll auch nur Zugriff auf seine eigenen Maschinen haben.

...,auch dazu muss man nicht 100te Dateien erstellen. Die Daten entsprechend Filtern und via HTML Mail den gefilterten Bereich per eMail verschicken. Das wäre zumindest meine favorisierte Option. Ansonsten kannst Du selbstverständlich alles machen, was auch immer Dir am Liebsten ist...

Ich vermute mal, Dein Problem ist ja nicht das Erstellen der Datei oder der Mail, sondern die Auswahl aller notwendigen Filter. Wie das geht, kann ich Dir ja schnell mal zeigen. Den Rest musst Du Dir selbst machen.
Hinweis, die formartierte Tabelle hab ich umbenannt in tblRohdaten und ich verwende die ersten 3 Spalten. Und es muss sichergestellt sein, dass Spalte L keine Daten enthält. Das alles muss bei Dir evtl. angepasst werden.

 
Code:
Sub Start()

Dim Spalte As Integer, Zeile As Long
Application.ScreenUpdating = False
Tabelle1.Activate
For Spalte = 1 To 3
    EindeutigeZeilenwerte Spalte
    Zeile = 2
        Do Until Cells(Zeile, 12) = ""
'            Debug.Print Cells(Zeile, 12).Value
            Range("tblRohdaten").AutoFilter Spalte, Cells(Zeile, 12)
            '********************************************************
                '...und hier dazwischen machst Du alles, was zum Speichern oder Mail versenden oder was auch immer erforderlich ist...
            '********************************************************
            Range("tblRohdaten").AutoFilter
            Zeile = Zeile + 1
        Loop
    Columns(12).ClearContents
Next Spalte
Application.ScreenUpdating = True

End Sub

Sub EindeutigeZeilenwerte(ausSpalte As Integer)
   Dim adr As Range, n As String
    Set adr = Cells(1, ausSpalte)
    n = "tblRohdaten[" & adr & "]"
    Tabelle1.Range("L2").Formula2R1C1 = "=UNIQUE(" & n & ",FALSE,FALSE)"
End Sub
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


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