Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
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

Excel Datei nach Farben splitten

Excel Datei nach Farben splitten
02.11.2020 11:58:03
MCeeel
Guten Tag,
ich habe diesem Post folgende Datei angehängt.
https://www.herber.de/bbs/user/141245.xlsx
Ich würde gerne die Datei über VBA in 3 Dateien je nach der Farbe aufsplitten und die Ursprungsdatei behalten, sodass ich am Ende 4 Dateien habe.
Die Dateien sollen dann bitte auch folgendermaßen heißen: "Rot", "Gelb", "Blau"
Vielen Dank im Voraus!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Datei nach Farben splitten
02.11.2020 12:02:53
Daniel
Hi
1. der Autofilter kann nach einer Farbe filtern
2. in gefilterten Dateien werden nur sichtbare Zeilen bearbeitet und kopiert.
Mit Hilfe des Makrorecorders solltest du damit schon ein gutes Stück weiterkommen.
Gruß Daniel
AW: Excel Datei nach Farben splitten
02.11.2020 12:06:44
MCeeel
Hi Daniel,
ich habe eine Sache vergessen;
Es soll zudem nach der Zahl gefiltert werden und dies im Dateinamen angehängt werden z.B. "Gelb 7"
Also ich möchte alle die gelb sind und die gleiche Zahl besitzen in einer Datei haben.
- In meinem Beispiel ist jede Zahl einzigartig.
Weshalb ich mit dem Makrorekorder nicht das gewünschte Ergebnis erziele.
Anzeige
AW: Excel Datei nach Farben splitten
02.11.2020 18:06:12
Yal
Hallo MCeeel,
Lustig! Mal was ganz anderes.
Ich war ein Bischen faul und habe in den ZielTabelle nur der Inhalt der Spalte 1 gespeichert. Der Rest ist eh als Dateiname zu haben.
(Durchlesen, verstehen, Zielverzeichnis anpassen. Oder herstellen)
Const cFCode = "255;65535;15773696"
Const cFName = "Rot;Gelb;Blau"
Private C As Collection
Private WS1 As Worksheet
Public Sub Durchlaufen()
Dim i As Integer, E
Dim strKey As String
Set C = New Collection
Set WS1 = ThisWorkbook.Worksheets(1)
'Farbe und Zahl "sammeln"
For i = 2 To WS1.Range("A1").End(xlDown).Row
strKey = Farbe_decodieren(WS1.Cells(i, 3).Interior.Color) & WS1.Cells(i, 2)
CollAdd strKey
Next i
'Was Steht in der Sammlung
'For Each E In C: Debug.Print E: Next
'Eine Tabelle pro gesammelte Element
Tabellen_herstellen
'Kopieren in die richtige Tabelle
For i = 2 To WS1.Range("A1").End(xlDown).Row
strKey = Farbe_decodieren(WS1.Cells(i, 3).Interior.Color) & WS1.Cells(i, 2)
Worksheets(strKey).Range("A10000").End(xlUp).Offset(1, 0) = WS1.Cells(i, 1)
Next
'Tabellen als einzelne Datei speichern
FarbTabelle_speichern
End Sub
Private Sub Tabellen_herstellen()
Dim WS As Worksheet
Dim E
For Each E In C
Set WS = ThisWorkbook.Worksheets.Add
WS.Name = E
WS.Range("A1") = WS1.Range("A1")
Next
End Sub
Private Function Farbe_decodieren(FCode As Long) As String
Dim i
Dim arrFarbe
Farbe_decodieren = "" 'Default-Value
arrFarbe = Split(cFCode, ";")
For i = 0 To UBound(arrFarbe)
If FCode = arrFarbe(i) Then
Farbe_decodieren = Split(cFName, ";")(i)
Exit For 'steigt schneller aus
End If
Next
End Function
Private Sub CollAdd(Elt As String)
On Error Resume Next
C.Add Elt, Elt
End Sub
Private Sub FarbTabelle_speichern()
Dim WS As Worksheet
Dim DName As String
For Each WS In Worksheets
If WS.Name  WS1.Name Then
DName = "C:\temp\" & WS.Name & ".xlsx"
WS.Move
ActiveWorkbook.SaveAs Filename:=DName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:= _
False
ActiveWorkbook.Close
End If
Next
End Sub
Viel Erfolg
Yal
Anzeige
AW: Excel Datei nach Farben splitten
03.11.2020 07:26:37
MCeeel
Vielen lieben Dank!
Perfekt! :)
AW: Excel Datei nach Farben splitten
03.11.2020 10:29:05
MCeeel
Könntest du mir noch sagen, wie ich eine weitere Spalte in die zu erstellende Datei übernehme?
Also wenn nicht nur A übernommen werden soll sondern auch E & F für die zugehörigen Werte?
Danke
AW: Excel Datei nach Farben splitten
03.11.2020 11:11:07
Daniel
Hi
probier mal diesen Code.
passt sich automatisch and die größe der verwendeten Tabelle an.
Wenn du eine Farbe verwendest, für die du keinen eingenen Namen definiert hast (Funktion Farbname), dann wird der RGB-Farbwert in Hex als Dateiname verwendet:
Sub Dateien_Teilen()
Dim dic As Object
Dim Zelle As Range
Dim ID
Dim rng As Range
Dim WB_neu As Workbook
Set dic = CreateObject("Scripting.dictionary")
With ActiveSheet.Cells(1, 1).CurrentRegion
'--- zellbereiche einlesen
For Each Zelle In .Columns(2).Offset(1, 0).Resize(.Rows.Count - 1).Cells
ID = Farbname(Zelle.Offset(0, 1)) & "_" & Zelle.Value
If dic.exists(ID) Then
Set dic(ID) = Union(dic(ID), Intersect(.Cells, Zelle.EntireRow))
Else
Set dic(ID) = Intersect(.Cells, Zelle.EntireRow)
End If
Next
'--- Dateien erstellen
Set WB_neu = Workbooks.Add
.Rows(1).Copy WB_neu.Sheets(1).Cells(1, 1)
For Each ID In dic.keys
WB_neu.Sheets(1).UsedRange.Offset(1, 0).Clear
dic(ID).Copy WB_neu.Sheets(1).Cells(2, 1)
WB_neu.SaveAs ID, xlOpenXMLWorkbook
Next
WB_neu.Close False
End With
End Sub
Function Farbname(Zelle As Range) As String
Select Case Zelle.Interior.Color
Case 255: Farbname = "rot"
Case 65535: Farbname = "gelb"
Case 15773696: Farbname = "blau"
Case Else: Farbname = WorksheetFunction.Dec2Hex(Zelle.Interior.Color)
End Select
End Function

um den Code zu verstehen, solltest du dich mit dem Dictionary-Objekt auseinandersetzen.
Das Dictionary-Objekt stellt ein eindimensionales Array dar, bei dem der Iindex über einen beliebigen Freitext gebildet werden kann.
Ich verende als Index die Kombination aus Farbe und Zahl, und sammle dann für jeden Index die einzelnen Zeilen zusammen, um sie dann in der zweiten Schleife in die einzelnen Dateien zu übertragen.
Gruß Daniel
Anzeige
AW: Excel Datei nach Farben splitten
03.11.2020 12:34:43
MCeeel
Das läuft super!
Vielen Dank.
Jetzt hoffentlich nur noch eine kleine Änderung.
Wie kann die Dateien die nun gelb_9 etc. heißen umbennenen, sodass diese nicht farbe_zahl heißen sondern für gelb auswertung_zahl und blau info_zahl?
Vielen Dank im Voraus!
Gruß Fabian
AW: Excel Datei nach Farben splitten
03.11.2020 12:46:26
MCeeel
Hat sich erledigt - habs erst nicht gesehen. Vielen Dank :)
Eventuell habe ich gleich noch einen kleinen Modifikationswunsch.
AW: Excel Datei nach Farben splitten
03.11.2020 13:20:10
Daniel
wobei sich dann die Frage stellt, ob ihr nicht besser einfach nur gleich die Begriffe in die Zellen schreibt und das makro sich an diesen orientiert und ihr die Farben für die Kenntlichmachung dann einfach über Bedingte Formatierung zuspielt.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige