Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA nach Farben und Werte suchen?
#1
Einen schönen guten Tag in die Runde Smile

ich würde gern folgendes realisieren:

In den Spalten U bis Y ist eine bedingte Formatierung erstellt.
In U stehen Zahlen. Diese sind unterschiedlich wie auch mehrfach dieselben.
Als Beispiel:
100
100
5
100
20
5

In W stehen unterschiedliche Zahlen.

Die bedingte Formatierung sucht nun in U nach den gleichen Werten und in W nach der kleinsten Zahl dazu - dieser Bereich wird eingefärbt.

Nun sind die relevanten Zahlenbereiche also markiert.

Könnte man nun in U klicken - VBA erkennt um welche Zahlengruppe es sich handelt und löscht alle nicht gefärbten Zellen (U bis W) dieser Zahlengruppe dieser kompletten Spalten?

Da ich weiß, dass ich supertoll erklären kann, hab ich eine Beispielmappe gebaut Smile

Hat jemand vielleicht eine hilfreiche Idee?

Liebe Grüße
Klaus


Angehängte Dateien
.xlsx   Bsp Farbe und Wert 1.xlsx (Größe: 10,21 KB / Downloads: 2)
Antworten Top
#2
Hallo Klaus,

du beschreibst schon gut, nur ich bin schwer von Kapéé. :19: 
Die anderen haben ja bisher nie geschrieben, dass sie Dich nicht verstehen.

Nun zu Deinem Problem.
Farben die mit Bedingter Formatierung gesetzt sind, sind nur aufwendig auszulesen.
Ein Code, der das macht, hat mehr Zeilen, als die Codezeilen, die ich bisher für Dich geschrieben habe. Nur damit Du eine Vorstellung hast.
Ist vielleicht etwas untertrieben, aber egal.

Um das Ganze aber trotzdem mit wenig Aufwand lösen zu können, kann man sich an die Bedingung der Bedingten Formatierung halten.
Das hieße, man müsste die Bedingung kennen. Ist das die, die auch in der Beispielmappe eingestellt ist?

Edit:
Ich sehe Orange aber kein Hellgrün in der Datei. Entweder mein Excle stellt es anders dar oder ich muss zum Optiker.
Wäre nett, wenn andere mir mitteilen könnten, wie es mir gesundheitlich geht. :22:
Gruß Atilla
Antworten Top
#3
Hallo Atilla Smile

schön Dich zu lesen - auch wenn es dir scheinbar nicht so gut geht....  :D
also bei mir sind die Felder der Range V:Y hellgrün...

Hab ich mir also mal wieder was tolles überlegt was... hm... wenn das natürlich ein großer Aufwand ist, dann ist das wohl einfacher man sucht die Bereiche von Hand raus.
Oder was ist denn wenn man garnicht nach den Farben guckt, sondern diese Berechnung die die Bedingte Formel benutzt verwendet und alles was größer als die der kleinste Wert (das wäre dann der hellgrüne! ,-) Bereich) löschen würde?
Wäre das vielleicht einfacher umzusetzen?

Japp - so wie das in der Bsp Mappe steht ist das auch im Original.
Antworten Top
#4
Was Atilla schreibt, trifft auf die Xl-Versionen vor Xl14/2010 zu, Klaus,
ab letzterer ist das per Subprozedur recht einfach, mit einer UDF in einer Zellformel ggf auch, aber mit einem kleinen Umweg, weil MS den direkten für UDFs in Zellformeln gesperrt hat. Das „Zauber­wort“ heißt .DisplayFormat. Das ist eine objektbegründende Eigenschaft des Range-Objekts, die ebenfalls Eigenschaften wie .Interior.Color u.a. hat, aber stets das aktuelle Format zeigt, also auch das durch Bedingt­Formatierung verursachte.
Gruß, Castor
Antworten Top
#5
Hallo Klaus,

ok, da Du mich krank schreibst, kann ich jetzt nicht helfen, muss erst mal zum Arzt. :19: 

Du hast ja schöne Aufgaben. Konntest Du keine andere Bedingung finden?
Theoretisch sind das unendlich viele Farben.

Du müsstest diese Bedingung noch einmal eingrenzen, denke ich.

Im Moment habe ich noch keine Idee. Aber gleich kommt Wicki im KIKA, der hat immer gute Ideen.


Vielleicht verstehe ich es ja wieder nicht richtig
Gruß Atilla
Antworten Top
#6
Hallo Castor, 
danke für den Tip. Aber wenn das für XL Versionen vor 2010 gilt, dann hat der Atilla doch nicht so unrecht. Ich arbeite ja mit 2003 bzw 2007 Smile

Atilla ich glaub ich hab mich wiedermal doof ausgedrückt.
Ich versuche das nochmal zu beschreiben:

Lassen wir mal die Farb-Idee ganz aus dem Kopf, dann ist das vielleicht einfacher zu verstehen.
Ich formuliere um Smile

Nehmen wir nocheinmal die Range U:Y

In U stehen Zahlen die mehrfach vorkommen (die Zahlen die mehrfach vorkommen bilden eine "Zahlengruppe"). Das ist glaub ich einfach zu verstehen?!
In W stehen dazugehörige Zahlen... (diese stellen eine Menge dar). Das ist glaub ich auch verständlich.
 
Jetzt wirds interessant:
Nehmen wir nun eine solche Zahlengruppe. Alle Zahlen die in U stehen und 4004 heißen.
Diese Gruppe müsste der code erkennen.
Jetzt guckt er in in Spalte W neben diesen 4004er Zahlen was dort für Zahlen stehen.
Der kleinste Wert ist der, der interessiert.
In unserem Fall ist das die (fast) neben der 4004 stehende 80. Um diese Zeile geht es.
Wenn man jetzt auf irgendeinde 4004 klickt, dann sollen alle anderen Zeilen der Zahlengruppe 4004 gelöscht werden.
In unserem Fall sind das die Zeilen mit der 100, 90 und 85.
Damit ist die Zahlengruppe 4004 bereinigt.

Jetzt könnte man sich die nächste Zahlengruppe anschauen. 
Sagen wir die 101. Hier wäre der kleinste Wert - der, der interessiert - die 50.
Alle anderen Zeilen der Zahlengruppe 101 sollten per Klick auf eine 101er Zahl gelöscht werden.
In unserem Bsp wären das die Zeilen mit der 100, 90, 80, 70 und 60.
Damit wäre auch die 101er Zahlengruppe bereinigt...



Wichtig ist dabei, dass keine ganzen Zeilen gelöscht werden können, sondern nur die Werte aus dem Bereich (U:Y)

So vielleicht?
Blush
Antworten Top
#7
Hi Klaus,

reine Formellösung mit Filterung:

Tabelle1

UVWXYZ
1NummerZahl 1Zahl 2Zahl 3Zahl 4HS
2200210100FALSCH
310110100FALSCH
41011090FALSCH
52002890WAHR
64004585FALSCH
71012080FALSCH
830380100FALSCH
93033090WAHR
101019070FALSCH
11400450100FALSCH
1240041090FALSCH
1350005100100FALSCH
14500056090WAHR
15100130100WAHR
161014060FALSCH
171019050WAHR
1840045080WAHR
Formeln der Tabelle
ZelleFormel
Z2{=UND($W2<>"";MIN(WENN($U$2:$U$170=$U2;$W$2:$W$170))=$W2)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Die Spalte U nach der gewünschten Ziffer und die Hilfsspalte nach WAHR filtern und die Inhalte löschen - ist das eine Option für dich? Bei Nichtgebrauch Spalte einfach ausblenden.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#8
(09.02.2017, 21:08)Klaus schrieb: So vielleicht?
Blush

leider nein, Klaus.

Eher noch weniger. Wenn ich das mache, was ich jetzt verstanden habe, dann würde ich bei klick auf 4004 ohne nach links oder rechts zu gucken
alle 4004 er löschen. Und bei Klick auf 101 sind alle 101 weg, natürlich auch die Inhalte aus den Zellen daneben bis Spalte Y.
Gruß Atilla
Antworten Top
#9
:72:

Aua, aua, aua,  jetzt steig ich dahinter.

Günter Vorschlag hat mir die Augen aufgemacht.
Ich habe bisher nur die Bedingte Formatierung in U betrachtet und auch dort die Farben.
Die Feile führten ja auch dahin.

Na, Günters Vorschlag ist doch machbar.
einmal nach dem Wert in U Filtern und dann nach Spalte Y mit Falsch.

Das sollte auch per VBA nach Doppelklick in die Zelle machbar sein.
Magst Du manuell oder per Code und Doppelklick?

Und beim nächsten mal erklärst Du gleich in drei Varianten, was Du möchtest, vielleicht kapier ich es dann auf Anhieb. :19:

Jetzt weiß ich auch, warum ich Dich diesmal nicht verstanden habe. Ich habe Deinen ersten Beitrag gar nicht gelesen, sondern gleich die Datei
runtergeladen und dort die Erklärung angesehen. Im Beitrag hast Du es doch wunderbar erklärt. Wahrscheinlich war ich so nervös, dass ich es diesmal wieder vermassele und habs dann auch vermasselt. Muss nicht zum Optiker aber....
Gruß Atilla
Antworten Top
#10
Hallo Klaus,

unten stehenden Code in das Codemodul der Tabelle:


Code:
 If Not Intersect(Target, Range("U2:U170")) Is Nothing Then
   Cancel = True
   bedingt_löschen
 End If
End Sub


Sub bedingt_löschen()
 Dim i As Long, p
 Dim Wert
 Dim rngA As Range
 
 Wert = Selection.Value
 p = Evaluate("=MIN(IF($U$2:$U$170=" & Wert & ",$W$2:$W$170))")
 If IsNumeric(p) Then
   For i = 2 To 170
     If Cells(i, 21) = Wert And Cells(i, 23) <> p Then
       If rngA Is Nothing Then
         Set rngA = Range(Cells(i, 21), Cells(i, 25))
       Else
         Set rngA = Union(rngA, Range(Cells(i, 21), Cells(i, 25)))
       End If
     End If
   Next i
 End If
 If Not rngA Is Nothing Then
   rngA.ClearContents
   Set rngA = Nothing
 End If
 Range(Cells(Selection.Row, 21), Cells(Selection.Row, 25)).ClearContents

End Sub


Ok so?
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste