Füllfarbe zufällig auswählen in Excel
Schritt-für-Schritt-Anleitung
Um die Füllfarbe einer Zelle in Excel per Zufall auszuwählen, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Klicke im Menü auf
Einfügen und wähle Modul.
- Kopiere den folgenden VBA-Code in das Modul:
Private Sub Start_Click()
Dim v_lpar, v_cpu, i, z, v_lastrow As Integer
Dim v_ram_mb As Long
Dim v_ram_gb As Double
Dim v_suche_1, v_suche_2 As String
Dim lIndex As Long, arrColorIndex, arrVerwendet() As Boolean, icount As Long
' Array mit den zu verwendenden Colorindex-Nummern
arrColorIndex = Array(3, 4, 5, 6, 7, 8, 19, 34, 35, 36, 39, 45, 46)
ReDim arrVerwendet(LBound(arrColorIndex) To UBound(arrColorIndex))
VBA.Randomize (1)
icount = LBound(arrColorIndex) - 1
suchspalte = 4
i = 6
' Ermittle die erste leere Zelle
For z = 8 To 34
If Sheets("HW_SMI").Cells(z, 4) = "" Then
Exit For
End If
Next z
' Schleife für alle Suchwörter
For suchzeile = 8 To z
v_suche_1 = Sheets("HW_SMI").Cells(suchzeile, suchspalte).Value
If v_suche_1 <> v_suche_2 Then
' Berechnung Werte nach Suchwort
v_lpar = WorksheetFunction.CountIf(Sheets("HW_SMI").Range("D8:D34"), v_suche_1)
v_cpu = WorksheetFunction.SumIf(Sheets("HW_SMI").Range("D8:AC34"), v_suche_1, Sheets("HW_SMI").Range("T8:T34"))
v_ram_mb = WorksheetFunction.SumIf(Sheets("HW_SMI").Range("D8:AC34"), v_suche_1, Sheets("HW_SMI").Range("Z8:Z34"))
v_ram_gb = Round((v_ram_mb / 1024), 2)
' Schreiben der Daten in Zelle
Sheets("Grafik_Koeln").Cells(i, 1) = "Lpar: " & v_lpar & " / CPU: " & v_cpu & " / RAM: " & v_ram_gb
' Zellenformatierung
Sheets("Grafik_Koeln").Rows(i).RowHeight = 15 * v_lpar
' Füllfarbe per Zufall
FarbeNeu:
lIndex = Int((UBound(arrColorIndex) - LBound(arrColorIndex) + 1) * VBA.Rnd + LBound(arrColorIndex))
If arrVerwendet(lIndex) = True Then GoTo FarbeNeu
arrVerwendet(lIndex) = True
icount = icount + 1
If icount = UBound(arrColorIndex) Then
ReDim arrVerwendet(LBound(arrColorIndex) To UBound(arrColorIndex))
icount = LBound(arrColorIndex) - 1
End If
With Sheets("Grafik_Koeln").Cells(i, 1).Interior
.ColorIndex = arrColorIndex(lIndex)
.Pattern = xlSolid
End With
v_suche_2 = v_suche_1
i = i + 1
End If
Next suchzeile
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Füge einen Button hinzu, um den Code auszuführen: Gehe zu
Entwicklertools, klicke auf Einfügen und wähle Button.
- Verknüpfe den Button mit der
Start_Click-Prozedur.
Jetzt kannst du den Button klicken, und die Füllfarbe wird zufällig aus den vordefinierten Farben ausgewählt.
Häufige Fehler und Lösungen
- Farbe wird nicht geändert: Stelle sicher, dass das Array
arrColorIndex korrekt definiert ist und die ColorIndex-Werte existieren.
- VBA funktioniert nicht: Prüfe, ob Makros in deinen Excel-Einstellungen aktiviert sind.
- Doppelte Farben: Der Code stellt sicher, dass keine doppelten Farben verwendet werden. Wenn du mehr Farben benötigst, füge diese in das
arrColorIndex-Array ein.
Alternative Methoden
Eine einfache Möglichkeit ohne VBA ist die Verwendung von bedingter Formatierung. Du kannst eine Regel erstellen, die die Füllfarbe basierend auf dem Wert oder den Bedingungen ändert. Beachte, dass diese Methode nicht die gleiche Flexibilität wie ein Zufallsgenerator bietet.
Praktische Beispiele
- Farben zufällig zuweisen: Mit dem obenstehenden VBA-Skript kannst du bis zu 13 verschiedene Farben per Zufallsgenerator zuweisen.
- Zufallsgenerator 3 Farben: Wenn du nur drei Farben verwenden möchtest, ändere das Array in
arrColorIndex = Array(3, 4, 5).
- Zufallsgenerator 4 Farben: Ändere das Array in
arrColorIndex = Array(3, 4, 5, 6) für vier Farben.
Tipps für Profis
- Excel Tastenkombination Füllfarbe: Du kannst
ALT + H + H verwenden, um das Füllfarbmenü schnell zu öffnen, anstatt mit VBA zu arbeiten.
- Optimierung des Codes: Du könntest den Code weiter optimieren, indem du die Anzahl der Durchläufe reduzierst oder das Array der Farben dynamisch erstellst, basierend auf den vorhandenen Daten.
FAQ: Häufige Fragen
1. Wie kann ich mehr als 13 Farben verwenden?
Erweitere das arrColorIndex-Array mit den gewünschten ColorIndex-Werten.
2. Funktioniert das Skript in allen Excel-Versionen?
Ja, das Skript funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen.
3. Wie kann ich die Zeilenhöhe in cm angeben?
Excel verwendet Punkte für die Zeilenhöhe. Du kannst die Umrechnung verwenden: 1 cm = 28.35 Punkte. Verwende diese Formel in deinem Code.