Excel - wenn Zelle gelb, dann X
Hallo liebe Admin-User,
ich habe eine kurze Frage zu einem Excel-Problem.
In meiner Exceldatei möchte ich, dass in einem bestimmten Bereich in alle Zellen, die gelb sind (RGB: 255, 255, 0), automatisch ein großes "U" eingefügt wird.
Ich vermute mal, dass man das über VBA-Code lösen könnte.
Grüße von
Yan
ich habe eine kurze Frage zu einem Excel-Problem.
In meiner Exceldatei möchte ich, dass in einem bestimmten Bereich in alle Zellen, die gelb sind (RGB: 255, 255, 0), automatisch ein großes "U" eingefügt wird.
Ich vermute mal, dass man das über VBA-Code lösen könnte.
Grüße von
Yan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7264298923
Url: https://administrator.de/contentid/7264298923
Ausgedruckt am: 21.11.2024 um 17:11 Uhr
40 Kommentare
Neuester Kommentar
Hallo,
Steht alles hier drin, inkl. "neuere Excel" Versionen
Heißt: du hast deine Vorlagen, bau es nach deinen Wünschen um. Sollte doch drin sein, etwas zu adaptieren?
Nur vorkauen bringt Dich ja nicht wirklich weiter. Try & Error und ganz ehrlich? So schwierig ist das nicht.
Gruß.
Nein, ich habe schon am Freitag und heute danach im Internet gesucht.
Ohje ..Steht alles hier drin, inkl. "neuere Excel" Versionen
Und meist sind die Lösungen falsch herum für das von mir beschriebene Problem.
Intelligence is the ability to adapt to change (Stephen Hawking)
Nur vorkauen bringt Dich ja nicht wirklich weiter. Try & Error und ganz ehrlich? So schwierig ist das nicht.
Gruß.
Bitte doch erst Suchfunktion hier benutzen
Excel - Wenn Zelle eine bestimmte Farbe hat, dann soll sie einen bestimmten Inhalt annehmen
Gruß
Excel - Wenn Zelle eine bestimmte Farbe hat, dann soll sie einen bestimmten Inhalt annehmen
Gruß
Ich verstehe diese Zusammenhänge nicht, die ich dort in dem schwarzen Code-Kasten sehe.
Wat sons, ... mitdenken und logische Zusammenhänge verstehen sind ja auch nur privilegierten Personen vorbehalten 🙃.Vielleicht nimmst du dir mal einen Stift und malst ihn dir weiß 😂
Bastel dir eine Funktion, wenn du mit VBA nicht klar kommst.
https://exceltricks.blog/hintergrundfarbe-rgb-aus-einer-zelle-in-excel-a ...
Einzig die Formatierung auf dem Blog ist kacke.
Der Code muss so lauten:
Das wirft dir einen Wert aus. Damit kannst du eine WENN-Funktion füttern.
Protipp: lern endlich VBA wenn du so viel damit in Excel machen willst. Es gibt drölfzigtausend Bücher.
https://exceltricks.blog/hintergrundfarbe-rgb-aus-einer-zelle-in-excel-a ...
Einzig die Formatierung auf dem Blog ist kacke.
Der Code muss so lauten:
Function RGB_Hintergrundfarbe(Farbe As Range)
Dim Rot As Long, Grün As Long, Blau As Long, Wert As Long
Wert = Farbe.Interior.Color
On Error Resume Next
Rot = Wert Mod 256
Wert = (Wert–Rot) / 256
Grün = Wert Mod 256
Wert = (Wert–Grün) / 256
Blau = Wert Mod 256
RGB_Hintergrundfarbe = Rot & ", " & Grün & ", " & Blau
End Function
=(WENN(RGB_Hintergrundfarbe(A1)="255, 0, 0";"U";""))
Protipp: lern endlich VBA wenn du so viel damit in Excel machen willst. Es gibt drölfzigtausend Bücher.
Ich weiß nicht, wo das Problem liegt, ganz im Ernst.
Mein oben genannten Beispiel funktioniert einfach und ohne Funktion. Ganz ohne VBA.
Formel in A3:
Wenn die Zelle die Farbe 6 hat (Farbecode für Farbe: Gelb), dann schreibe in die Zelle: "Gelb", sonst "NICHT GELB". "" für leer. In deinem Fall: ersetze GELB mit U.
Ribbon -> Formeln -> Namensmanager:
Auf dein Sheet dann halt noch anpassen.
Gruß
Mein oben genannten Beispiel funktioniert einfach und ohne Funktion. Ganz ohne VBA.
Formel in A3:
=WENN(Farbe=6;"GELB";"NICHT GELB")
Wenn die Zelle die Farbe 6 hat (Farbecode für Farbe: Gelb), dann schreibe in die Zelle: "Gelb", sonst "NICHT GELB". "" für leer. In deinem Fall: ersetze GELB mit U.
Ribbon -> Formeln -> Namensmanager:
=ZELLE.ZUORDNEN(63;Tabelle1!A3)
Auf dein Sheet dann halt noch anpassen.
Gruß
Schick mir bitte mal ein Auszug deines Sheets. (möglichst ohne Makro)
Ist dein Gelb denn auch wirklich Gelb? Du kannst Dir den Farbcode anzeigen lassen.
Edit: eben nochmal getestet. Problemlos hier. Wie wird deine Zelle Gelb gefärbt?
Gruß
Ist dein Gelb denn auch wirklich Gelb? Du kannst Dir den Farbcode anzeigen lassen.
Edit: eben nochmal getestet. Problemlos hier. Wie wird deine Zelle Gelb gefärbt?
Gruß
Zitat von @6376382705:
Ich weiß nicht, wo das Problem liegt, ganz im Ernst.
Ich weiß nicht, wo das Problem liegt, ganz im Ernst.
Das Problem ist generell bei solchen Geschichten, dass man Excel neu berechnen lassen muss. Außerdem muss die Datei auch als xlsm gespeichert werden.
So gesehen ist die Lösung von @6376382705 noch besser.
Aber: einfacher zum Bearbeiten wirds mit VBA
Auslesen der Hintergrundfarbe geht mit
cells(x,y).interior.Color
Da setzt du eine Variable mit z.B.
background = cells(x,y).interior.Color
Und dann gleichst du halt ab.
Wenn background = irgendeine Farbe, dann setz den Wert U in die Zelle
Kurz im Kopf geklöppelt (un dich hab Range und die Zellbezeichnung aus Excel gewählt, wiel viele da Probleme haben):
Sub color()
Farbe = Range("A1").Interior.color
Range("B1").Value = Farbe
If Range("A2").Interior.color = 65535 Then
Range("A2").Value = "U"
Else: Range("A2") = "Nada!"
End If
End Sub
Bastel da mal selber rum. Mappe, Schaltfläche einfügen, diese dem Makro color zuweisen.
Dann Zellen A1 und A2 mit lustigen Farben befüllen und die Schaltfläche klicken.
Aber als xlsm speichern!
Bau das mal so:
dann dürfte sein Code aufgehen.
Waaaaaas eine Geburt :D
Grüße
Sub color()
If Range("A2").Interior.color = 65535 Then
Range("A2").Value = "U"
Else: Range("A2") = ""
End If
End Sub
Waaaaaas eine Geburt :D
Grüße
Dass du die Frage als gelöst markieren solltest.
@6376382705
Jo, so ist der Code schlanker.
Ich setz da irgendwie aus Gewohnheit immer erst eine Variable und arbeite dann mit der. Zumindest jetzt im Kopf so halbwegs.
Ich bin eher freudig überrascht, dass mein Code aus dem Kopf heraus tatsächlich so ohne Murren funktioniert. Und das obwohl ich schon seit Ewigkeiten nicht mehr mit VBA gebastelt habe. :D
Ja, Dein Code funktioniert auch. Aber der von @kpunkt hatte ja auch bereits funktioniert und ein "U" im gelben Feld eingesetzt.
Pack mal folgenden (getesteten) Code in deinen Button:
Sub Schaltfläche1_Klicken()
Dim Zelle As Range
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Interior.Color = RGB(255, 255, 0) Then
Zelle.Value = "U"
End If
Next Zelle
End Sub
Damit sollte überall ein U in die Zelle wandern, welches gelben Hintergrund hat. Bitte mal testen mit bedingten Formatierungen.
Gruß
Ich hab das mal kurz mit der bedingten Formatierung getestet.
Wenn man so eine Zelle ausliest, dann kommt als Farbode ein 16777215. Und das ist weiß.
Heißt: die bedingte Formatierung füllt die Zelle gar nicht mit der Farbe.
Ich gehe davon aus, dass das Makro vor der bedingten Formatierung ausgeführt wird.
Wenn man so eine Zelle erst mit einer Farbe füllt und die dann durch die bedingte Formatierung ändern lässt, dann bleibt die Zelle im Hintergrund gefüllt, die bedingte Formatierung "überschreibt" aber diese Farbe zumindest im Vordergrund.
Heißt also: verzichte auf die bedingte Formatierung und fülle die Zellen per VBA.
Wenn man so eine Zelle ausliest, dann kommt als Farbode ein 16777215. Und das ist weiß.
Heißt: die bedingte Formatierung füllt die Zelle gar nicht mit der Farbe.
Ich gehe davon aus, dass das Makro vor der bedingten Formatierung ausgeführt wird.
Wenn man so eine Zelle erst mit einer Farbe füllt und die dann durch die bedingte Formatierung ändern lässt, dann bleibt die Zelle im Hintergrund gefüllt, die bedingte Formatierung "überschreibt" aber diese Farbe zumindest im Vordergrund.
Heißt also: verzichte auf die bedingte Formatierung und fülle die Zellen per VBA.
Anstelle von cells(x,y).interior.Color arbeitet man mit
gut zu wissen. Danke Dir. Nun dürften wir aber wirklich ausreichend Beispiele und Vorlagen geliefert haben, dass das Thema nun geschlossen werden kann. //finally
DAS war der Grund, warum ich nach eine Lösung über VBA-Code gesucht hatte.
und davon wurden Dir mindestens 2 Lösung vorgelegt. Noch den letzten Beitrag von k. lesen und ergänzen und schon luppt das.also ohne dass man zusätzlich noch Formeln in die Zellen eintragen muss. Oder habe ich das falsch verstanden?
musst Du nicht. Hämmer einen Button hin oder bei Formload und press da den o.g. Code rein, fertig ist das Ding.Gruß
Ich versteh dein Problem nicht und bin jetzt auch raus.
Du hast diverse Codes für VBA bekommen, die alle funktionieren. Nur willst du etwas machen, das, wie du selber sagst, ja nicht funktionert.
Tjoa....das ist jetzt eher dein Problem.
Du kannst natürlich auch jemanden gegen Geld dein Projekt geben und es dann erledigen lassen.
Aber auch das wird dir nicht helfen, da scheinbar der Prozess, wie diese Datei befüllt werden soll, schon fehlerhaft ist.
Überleg dir erst mal einen sinnvollen Prozess.
Wenn durch was auch immer befüllte Zellen überschrieben werden können und sogar müssen, dann ist das alles sinnbefreit.
Merke: alles, was man sinnvoll und eindeutig auf Papier bringen kann, kann man auch digitalisieren. Einfaches ITTT. Ein PC kann halt nur diskrete Werte wie 0 und 1.
Du hast diverse Codes für VBA bekommen, die alle funktionieren. Nur willst du etwas machen, das, wie du selber sagst, ja nicht funktionert.
Tjoa....das ist jetzt eher dein Problem.
Du kannst natürlich auch jemanden gegen Geld dein Projekt geben und es dann erledigen lassen.
Aber auch das wird dir nicht helfen, da scheinbar der Prozess, wie diese Datei befüllt werden soll, schon fehlerhaft ist.
Überleg dir erst mal einen sinnvollen Prozess.
Wenn durch was auch immer befüllte Zellen überschrieben werden können und sogar müssen, dann ist das alles sinnbefreit.
Merke: alles, was man sinnvoll und eindeutig auf Papier bringen kann, kann man auch digitalisieren. Einfaches ITTT. Ein PC kann halt nur diskrete Werte wie 0 und 1.
Oke....ein letztes Mal noch.
In "Diese Arbeitsmappe" klatscht du den Aufruf des Makros. In deinem Fall
Startet dann beim Öffnen.
Man kann auch das Ändern bestimmter Zellen überwachen und dann ein Makro loslassen. Muss man aber aufpassen, dass das kein Loop wird. Daher nur bestimmte Zellen überwachen lassen.
https://www.excel-inside.de/vba-loesungen/ereignisse/264-beim-veraendern ...
In "Diese Arbeitsmappe" klatscht du den Aufruf des Makros. In deinem Fall
Sub Workbook_Open()
Call Schaltfläche1_klicken
End Sub
Startet dann beim Öffnen.
Man kann auch das Ändern bestimmter Zellen überwachen und dann ein Makro loslassen. Muss man aber aufpassen, dass das kein Loop wird. Daher nur bestimmte Zellen überwachen lassen.
https://www.excel-inside.de/vba-loesungen/ereignisse/264-beim-veraendern ...
Du kannst keine Makros auf einem geschützten Blatt ausführen. Wäre ja auch blöd wenn.
ABER: du kannst den Blattschutz im Makro temporär aufheben und anschließend (nach dem die U's verteilt wurden) wieder schützen.
so ungefähr, könnte das klappen.
Gruß
ABER: du kannst den Blattschutz im Makro temporär aufheben und anschließend (nach dem die U's verteilt wurden) wieder schützen.
Private Sub Workbook_Open()
Dim geschuetzt As Boolean
' Prüfe, ob das Blatt geschützt ist
geschuetzt = False
If ActiveSheet.ProtectContents Then
geschuetzt = True
' Blattschutz aufheben
ActiveSheet.Unprotect
End If
' starte dein Makro (das mit den U's)
YansMakro
' Schutz wieder aktivieren, wenn das Blatt zuvor geschützt war
If geschuetzt Then
' Passe hier die Optionen für den Blattschutz nach Bedarf an
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
'ab hier Code für dein Makro
Sub YansMakro()
Dim Zelle As Range
For Each Zelle In ActiveSheet.UsedRange
If Zelle.DisplayFormat.Interior.color = RGB(255, 255, 0) Then
Zelle.Value = "U"
End If
Next Zelle
End Sub
so ungefähr, könnte das klappen.
Gruß
Nope ist nicht möglich und wäre auch ein massives Sicherheitsleck.
Mach doch ein neues Tabellenblatt (nur für Dich sichtbar) mit Options Buttons und führe eben den Befehl mit deinen U's via Button aus, bei Bedarf. Ist ja eh quatsch, dass das Makro ständig rennt, obwohl die Daten schon korrekt sind.
Grüße
Mach doch ein neues Tabellenblatt (nur für Dich sichtbar) mit Options Buttons und führe eben den Befehl mit deinen U's via Button aus, bei Bedarf. Ist ja eh quatsch, dass das Makro ständig rennt, obwohl die Daten schon korrekt sind.
Grüße
So.
Jetzt muss ich Dich doch noch mal von der Seite anstupsen.
Wie wir hier in über 35 Kommentaren feststellen müssen, dass Du dir das hättest alles selbst erarbeiten können. Genau das hatte ich bezweckt mit meinen Links oben. Abgesehen von der bed. Formatierung (die Frage wäre hier gut gewesen), hast Du dich selbst großteilig da durch gekämpft und selbst probiert und bist schlussendlich selbst auf eine vernünftige Lösungen gekommen. Das waren die 35 Kommentare hier aber nicht Wert, auch die verplemperte Zeit nicht.
Das Internet ist voll von VBA Zeugs. Einfach bisschen was lesen, versuchen zu verstehen und selbst daraus was basteln (adaptieren). Ich behaupte, Du wärst auch auf die VBA Lösung von alleine gekommen (ist jetzt auch nicht sehr schwer: wenn das, dann das [wie Du korrekt in den Titel eingegeben hast]).
Gruß + weg hier
Jetzt muss ich Dich doch noch mal von der Seite anstupsen.
Wie wir hier in über 35 Kommentaren feststellen müssen, dass Du dir das hättest alles selbst erarbeiten können. Genau das hatte ich bezweckt mit meinen Links oben. Abgesehen von der bed. Formatierung (die Frage wäre hier gut gewesen), hast Du dich selbst großteilig da durch gekämpft und selbst probiert und bist schlussendlich selbst auf eine vernünftige Lösungen gekommen. Das waren die 35 Kommentare hier aber nicht Wert, auch die verplemperte Zeit nicht.
Meine Güte, wie ich diese "Forenerziehungsversuche" hasse face-wink
Wenn ich mir dein Ergebnis nun anschaue, lief das gar nicht so falsch. Nächstes Mal aber anders ran gehen: erst Internet, dann Forumsuche, zwischendurch selbst probieren und wenns echt nicht mehr geht, hier eine Frage stellen.Das Internet ist voll von VBA Zeugs. Einfach bisschen was lesen, versuchen zu verstehen und selbst daraus was basteln (adaptieren). Ich behaupte, Du wärst auch auf die VBA Lösung von alleine gekommen (ist jetzt auch nicht sehr schwer: wenn das, dann das [wie Du korrekt in den Titel eingegeben hast]).
Gruß + weg hier