Frage von Infamous25, 22

Makro funktioniert nicht?

Hi zusammen,

folgendes Makro funktioniert leider nur teilweise. Aktuell wirft es mir jetzt für jede Zeile ein neuen Sheet auf. Ích möchte aber nicht für jeden Mitarbeiter (1 pro Zeile) einen neuen Sheet, sondern pro Abteilung jeweils einen Sheet. Wie kann ich das am bestenb anpassen? Hier das Makro:

Sub DatenInExtraBlatt() Dim wksQ As Worksheet Dim wksZ As Worksheet Dim lngLZQ As Long Dim lngLZZ As Long Dim zell As Range Dim Dic As Object Dim keyD As Variant

Set Dic = CreateObject("Scripting.Dictionary") Set wksQ = Worksheets("data_in") 'ggf. ANPASSEN

For Each wksZ In Worksheets Dic(wksZ.Name) = "" Next

lngLZQ = wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row '3=SpalteC

For Each zell In wksQ.Range("C2:C" & lngLZQ) If zell.Value <> "" Then If Not Dic.Exists(zell.Value) Then Dic(zell.Value) = "clear" Set wksZ = Worksheets.Add(After:=Sheets(Sheets.Count)) wksZ.Name = zell.Value Else Set wksZ = Worksheets(zell.Value) If Dic(zell.Value) <> "clear" Then Dic(zell.Value) = "clear" wksZ.UsedRange.Clear 'Zieltabelle säubern End If End If lngLZZ = wksZ.Cells(wksZ.Rows.Count, 1).End(xlUp).Row '3=SpalteC zell.EntireRow.Copy wksZ.Range("A" & lngLZZ + 1) End If Next

End Sub

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 15

Irgendwo in deinem Makro greifst du auf die Spalte zu, in der die Mitarbeiter stehen. Diese Spalte musst du durch die Abteilungsspalte austauschen.

Dein Script ist schwer zu analysieren, weil du die Codeformatierung des Editors nicht verwendet hast.

Kommentar von Infamous25 ,

Danke dir. Ja ich weiß auch nicht warum er das Makro nicht richtig eingepflegt hat, aber genau das ist das Problem. Nur wo kann ich die Abteilung einpflegen, dass ist das Problem.

Expertenantwort
von Iamiam, Community-Experte für Excel, 7

Klar wie Kloßbrühe.

Aber vermutlich musst Du in Dic eine Abteilungsspalte einführen, und zwar in jede Zelle i'wo neben dem Mitarbeiter diesen Abteilungsnamen schreiben

(mit + oder = übernehmen, bis Wechsel, aber nicht, wenn nach anderen Kriterien(zB Namen) sortiert werden soll ! In diesem Fall einfach kopieren und als WERTE wieder einfügen). Muss natürlich entsprechend gepflegt werden.

 Ggf mit Application.Worksheetfunction.Sumif(...) auslesen? (Tipp: die Spalten als Namen benennen, dann werden auch umgeordnete SPALTEN in VBA richtig angesprochen.

Kommentar von Infamous25 ,

Ich danke euch allen für die zahlreichen Antworten. Ich habe es gestern noch hinbekommen, nur nicht mehr geantwortet.

Danke und Gruß

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten