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

Suche nach Farben und Bezug

Suche nach Farben und Bezug
Stefan
Hallo zusammen,
ich habe eine Tabelle mit ca. 500 Zeilen und ca. 250 Spalten. Die Tabelle dient als Terminplan. Spalte F enthält Namen und Zeile 9 enthält das Datum. Der Rest der Tabelle (G10:IP500) enthält die verschiedenen Termine diese sind gekennzeichnet durch ein farbiges Feld mit einem Text XYZ. Ich müßte nun den Bereich durchsuchen nach den entsprechenden Terminen, daraus eine Liste erzeugen und den zugehörigen Namen und das entsprechende Datum zuordnen? Hat irgendjemand eine Ahnung wie das zu bewerkstelligen ist?
Schon mal Danke für Eure Hilfe
Gruß
Stefan

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Suche nach Farben und Bezug
28.04.2010 09:02:11
Yusuf
Moin,
ungetestet. Nur an einer Sicherheitskopie testen bitte.
Sub Wenn_Farbig()
Dim Liste As String
Dim KalenderBlatt As String
Dim Zeile As Long
Dim Spalte As Integer
Dim k As Long
KalenderBlatt = ActiveSheet.Name
Liste = Sheets.Add.Name
Sheets(Liste).Name = "Liste"
Sheets(Liste).Cells(1, 1) = "Name"
Sheets(Liste).Cells(1, 2) = "Datum"
Sheets(Liste).Cells(1, 3) = "Eintrag"
k = 2
For Zeile = 10 To 500
For Spalte = 7 To 250
If Sheets(KalenderBlatt).Cells(Zeile, Spalte).Interior.ColorIndex  xlNone Then
Sheets(Liste).Cells(k, 1) = Sheets(KalenderBlatt).Cells(Zeile, 6)
Sheets(Liste).Cells(k, 2) = Sheets(KalenderBlatt).Cells(9, Spalte)
Sheets(Liste).Cells(k, 3) = Sheets(KalenderBlatt).Cells(Zeile, Spalte)
k = k + 1
End If
Next
Next
End Sub

Gruß
Yusuf
Anzeige
AW: Suche nach Farben und Bezug
28.04.2010 09:14:55
Stefan
Hallo Yusuf,
läuft leider noch nicht. An der Stelle "Sheets(Liste).Name = "Liste"" bekomme ich einen "Laufzeitfehler '9': Index außerhalb des gültigen Bereichs".
Wo kann ich die Farbe definieren und wie kann ich auch noch die Textanfrage einbinden. Da die Tabelle viele farbige Zellen enthält, muss ich die Suche genau auf eine bestimmte Farbe beschränken und die Zelle muss auch noch den Terxt "XYZ" enthalten
Gruß
Stefan
AW: Suche nach Farben und Bezug
28.04.2010 09:24:08
Yusuf
Hallo,
1. Gibt es schon eine Tabelle die Liste heisst?
2. Wie heisst deine Tabelle in der die Termine mit Datum aufgelistet werden sollen?
3. Wo und wie soll das Ergebnis in dieser Tabelle aufgelistet werden?
4. Kann dieser Text nach der du suchst in mehreren verschieden farbigen Zellen auftauchen?
Das o.g. Makro sollte eine Tabelle "Liste" erstellen und alle farbigen Eintraege in dem von dir genannten Bereich untereinander auflisten.
Um die Bezeichnung der Farbe herauszufinden muesstest du einmal eine Zelle in genau der Farbe formatieren und dies per VBA-recorder aufzeichen.
Und porste es hier bitte, damit ich weiss nach welcher Farbe du suchst.
Gruß
Yusuf
Anzeige
AW: Suche nach Farben und Bezug
28.04.2010 09:28:24
Yusuf
Hallo,
Das Makro ist nicht durchgelaufen, weil ich Anfuehrungszeichen vergessen habe.
So wuerde das Makro durchlaufen.
Vorher musst du aber die Tabelle "Liste", die durch das Makro erstellt worden ist löschen.
Sub Wenn_Farbig()
Dim Liste As String
Dim KalenderBlatt As String
Dim Zeile As Long
Dim Spalte As Integer
Dim k As Long
KalenderBlatt = ActiveSheet.Name
Liste = Sheets.Add.Name
Sheets(Liste).Name = "Liste"
Sheets("Liste").Cells(1, 1) = "Name"
Sheets("Liste").Cells(1, 2) = "Datum"
Sheets("Liste").Cells(1, 3) = "Eintrag"
k = 2
For Zeile = 10 To 500
For Spalte = 7 To 250
If Sheets(KalenderBlatt).Cells(Zeile, Spalte).Interior.ColorIndex  xlNone Then
Sheets("Liste").Cells(k, 1) = Sheets(KalenderBlatt).Cells(Zeile, 6)
Sheets("Liste").Cells(k, 2) = Sheets(KalenderBlatt).Cells(9, Spalte)
Sheets("Liste").Cells(k, 3) = Sheets(KalenderBlatt).Cells(Zeile, Spalte)
k = k + 1
End If
Next
Next
End Sub
Gruß
Yusuf
Anzeige
AW: Suche nach Farben und Bezug
28.04.2010 09:40:59
Stefan
Hallo Yusuf,
zu 1.: Es gibt noch keine Tabelle die Liste heißt (Es könnte aber auch eine neue Mappe geöffnet werden...)
zu 2.: Die Tabelle heißt "alle"
zu 3.: siehe 1 (wenn möglich in neuer Tabelle) - weitere Formatierungen kann ich dann selbst durchführen
zu 4.: Der Text sollte nur in diesen farbigen Zellen auftauchen. Da die Liste aber von anderen befüllt wird, kann ich keine Garantie geben.
Die Farbbezeichnung ist: 13434828
Gruß
Stefan
AW: Suche nach Farben und Bezug
28.04.2010 09:48:31
Yusuf
Hallo,
ich habe nur Excel 2000 und sind die Farbbezeichnungen nur 3 stellig.
Da ich bis jetzt noch nie mit Excel 2007 gearbeitet habe kann ich dazu nicht mehr sagen.
Ich habe das Makro mal so angepasst, dass man einen Text und ein einen Farbcode eingeben kann, nach denen dann gesucht wird.
Das Ergebnis wird in einer Tabelle "Liste", die zuvor in der selben Mappe erstellt wird untereinander aufgelistet.
Aber Tino hat hier schon ein Ergebnis gepostet. Seins wird mit Sicherheit besser funktionieren.
Er hat es auch direkt fuer 2007 geschrieben.
Sub Wenn_Farbig(Text As String, Farbe As String)
Dim Liste As String
Dim KalenderBlatt As String
Dim Zeile As Long
Dim Spalte As Integer
Dim k As Long
KalenderBlatt = ActiveSheet.Name
Liste = Sheets.Add.Name
Sheets(Liste).Name = "Liste"
Sheets("Liste").Cells(1, 1) = "Name"
Sheets("Liste").Cells(1, 2) = "Datum"
Sheets("Liste").Cells(1, 3) = "Eintrag"
k = 2
For Zeile = 10 To 500
For Spalte = 7 To 250
If Sheets(KalenderBlatt).Cells(Zeile, Spalte).Interior.ColorIndex = Farbe And _
Sheets(KalenderBlatt).Cells(Zeile, Spalte).Value = Text Then
Sheets("Liste").Cells(k, 1) = Sheets(KalenderBlatt).Cells(Zeile, 6)
Sheets("Liste").Cells(k, 2) = Sheets(KalenderBlatt).Cells(9, Spalte)
Sheets("Liste").Cells(k, 3) = Sheets(KalenderBlatt).Cells(Zeile, Spalte)
k = k + 1
End If
Next
Next
End Sub

Sub ausfuehren()
'Text  | Farbe
Wenn_Farbig "Hallo", "001"
End Sub

Gruß
Yusuf
Anzeige
Berichtigung
28.04.2010 10:12:53
Yusuf
Hallo,
das mit der 3-stelligen Bezeichnung fuer "colorindex" bei Excel 2000 stimmt nicht.
Irgendwie hab ich mich da von Tinos Antwort beeinflussen lassen.
Die Bezeichnungen fuer "colorindex" sind Ganzzahlige Zahlen. Fuer rot zum Beispiel ist es die 3.
Gruß
Yusuf
hier meine Version
28.04.2010 09:38:00
Tino
Hallo,
die Tabelle und die Farbe musst Du im Code anpassen, ich habe mal rot (Color=255) genommen.
Die Zellen müssen normal gefärbt sein, nicht über Bedingte Formatierung.
Sub FindDaten()
Dim Bereich As Range, rngZelle As Range
Dim strErste$
Dim nCount As Long
Dim MeAr()

'Tabelle anpassen 
With Sheets("Terminplan")
    'Suchbereich 
    Set Bereich = .Range("G10:IP500")
    
    'Suchformat löschen 
    Application.FindFormat.Clear
    
    'hier die Farbe festlegen, hier rot 
    Application.FindFormat.Interior.Color = 255
    
    ''oder für Versionen unter xl2007 mit ColorIndex 
    'Application.FindFormat.Interior.ColorIndex = 3 
    
    Set rngZelle = Bereich.Find(What:="*", After:=Bereich(Bereich.Rows.Count, Bereich.Columns.Count), _
    LookIn:=xlValues, SearchDirection:=xlNext, SearchFormat:=True)
    
    If Not rngZelle Is Nothing Then
        strErste = rngZelle.Address
        nCount = nCount + 2
        
        Redim Preserve MeAr(1 To 3, 1 To nCount)
        MeAr(1, nCount - 1) = "Name"
        MeAr(2, nCount - 1) = "Datum"
        MeAr(3, nCount - 1) = "Daten"
        
        MeAr(1, nCount) = .Cells(rngZelle.Row, 6)
        MeAr(2, nCount) = .Cells(9, rngZelle.Column)
        MeAr(3, nCount) = rngZelle
        
        Do
            'FindNext funktioniert nicht? 
            Set rngZelle = Bereich.Find(What:="*", After:=rngZelle, _
            LookIn:=xlValues, SearchDirection:=xlNext, SearchFormat:=True)
            
            If rngZelle.Address <> strErste Then
                nCount = nCount + 1
                Redim Preserve MeAr(1 To 3, 1 To nCount)
                MeAr(1, nCount) = .Cells(rngZelle.Row, 6)
                MeAr(2, nCount) = .Cells(9, rngZelle.Column)
                MeAr(3, nCount) = rngZelle
            End If
        Loop While strErste <> rngZelle.Address
    
    End If

End With
'Suchformat löschen 
Application.FindFormat.Clear

'Daten gefunden 
If nCount > 0 Then
    'neue Tabelle 
    With Sheets.Add(After:=Sheets(Sheets.Count))
        'daten einfügen 
        .Range("A1").Resize(Ubound(MeAr, 2), Ubound(MeAr)) = Application.Transpose(MeAr)
        'Erste ist Überschrift Fett 
        .Rows(1).Font.Bold = True
    End With
End If

End Sub
Gruß Tino
Anzeige
AW: hier meine Version
28.04.2010 10:22:20
Stefan
Hallo Tino,
ich habe das Makro grade versucht. Leider ist es ohne Treffer durchgelaufen. Folgendes hab ich eingefügt: "Application.FindFormat.Interior.Color = 13434828" und "Sheets("alle")"
Wo wird der Text "XYZ" abgefragt?
Das Makro sollte ca. 70 Treffer finden.
Gruß
Stefan
hier meine Testmappe
28.04.2010 11:08:42
Tino
Hallo,
einfach auf den Button drücken.

Die Datei https://www.herber.de/bbs/user/69276.xlsm wurde aus Datenschutzgründen gelöscht


Gruß Tino
AW: hier meine Testmappe
28.04.2010 12:09:03
Stefan
Hallo Tino,
ich habe mal die Formatierung in der ersten Zelle aus meiner Original-Datei übernommen. Die wird nicht erkannt? Ich glaub ich bin hier zu blöd!!!!!
https://www.herber.de/bbs/user/69278.xlsm
Gruß
Stefan
Anzeige
AW: hier meine Testmappe
28.04.2010 12:55:09
Tino
Hallo,
weis jetzt auch nicht welches Format da stört, versuche es mal mit diesem Code braucht etwas länger.
Sub FindDaten()
Dim Bereich As Range, rngTmp As Range
Dim nCount As Long, A&, B&, KorRow&, KorCol&
Dim MeAr(), MeArColor(), MeArData()
Dim MaxRow&

'Tabelle anpassen 
With Sheets("alle")
    'Suchbereich 
    MaxRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    If MaxRow > 500 Then MaxRow = 500
    Set Bereich = .Range("F9:IP" & MaxRow)
    Redim Preserve MeArColor(1 To Bereich.Rows.Count, 1 To Bereich.Columns.Count)
    A = 1: B = 1
    KorRow& = Bereich(1, 1).Row - 1
    KorCol = Bereich(1, 1).Column - 1

    For Each rngTmp In Bereich
        If rngTmp.Row <> A + KorRow& Then A = A + 1: B = 0
        If rngTmp.Column <> B + KorCol Then B = B + 1
        MeArColor(A, B) = rngTmp.Interior.ColorIndex
    Next rngTmp
    
    MeArData = Bereich.Value2
End With

For A = 2 To Ubound(MeArColor)
    For B = 2 To Ubound(MeArColor, 2)
        If MeArColor(A, B) <> xlColorIndexNone Then
            If nCount = 0 Then
                nCount = nCount + 1
                Redim Preserve MeAr(1 To 3, 1 To nCount)
                MeAr(1, nCount) = "Name"
                MeAr(2, nCount) = "Datum"
                MeAr(3, nCount) = "Daten"
            End If
            nCount = nCount + 1
            Redim Preserve MeAr(1 To 3, 1 To nCount)
            MeAr(1, nCount) = MeArData(A, 1)
            MeAr(2, nCount) = MeArData(1, B)
            MeAr(3, nCount) = MeArData(A, B)
        End If
    Next B
Next A

'Daten gefunden 
If nCount > 0 Then
    'neue Tabelle 
    With Sheets.Add(After:=Sheets(Sheets.Count))
        'daten einfügen 
        .Range("A1").Resize(Ubound(MeAr, 2), Ubound(MeAr)) = Application.Transpose(MeAr)
        With .UsedRange
            'Datumsformat einstellen 
            .Columns(2).NumberFormat = "m/d/yyyy"
            'Erste ist Überschrift Fett 
            .Rows(1).Font.Bold = True
            .Rows(1).Interior.ColorIndex = 48
            .EntireColumn.AutoFit
        End With
    End With
End If

End Sub
Gruß Tino
Anzeige
AW: Suche nach Farben und Bezug
28.04.2010 13:57:11
Stefan
Hallo Ihr Beiden,
vielen Dank für Eure Hilfe.
Funtionieren beide Wege hervorragend!!
Gruß
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige