2017-08-03 3 views
2

Gibt es einen Weg über Bedingte Formatierung (vorzugsweise keine VBA, aber wenn es eine muss, dann bin ich offen dafür), um eine Zelle zu markieren, wo die Formel "Idee" anders als die Zelle oben ist?Bedingte Formatierung - Zellen hervorheben, in denen die Formel anders ist?

Ich habe eine Spalte mit Formeln, muss aber manuell einige davon bearbeiten. Ich möchte diese manuell bearbeiteten Formeln hervorgehoben haben. Wenn ich also die Formel für die anderen Zellen ändere, weiß ich, welche Zelle beim Aktualisieren dieser Spalte übersprungen werden soll.

Zum Beispiel, hier ist meine Spalte und Formeln:
enter image description here

I B5 gelb hervorgehoben, haben möchten, da die Formel verschieden ist.

Ich habe versucht, mit =FORMULATEXT($B3)<>FORMULATEXT($B2), aber das funktioniert nicht, da es auf die literale Formel Text schaut ... in dem sie immer anders sind. (=FORMULATEXT(B3)=FORMULATEXT(B2) wird immer FALSE sein, da sich die Formel technisch ändert, obwohl es die gleiche "Idee" ist).

Ich könnte vielleicht auch =LEN($B3)<>LEN($B2) verwenden, aber das wäre eine falsche positive haben, wenn die Zeilenänderungen 9-10 und wieder von 99 zu 100 ...

Die andere Möglichkeit wäre natürlich, nur um Arbeiten Sie in einer IF() Aussage, um zu erklären, warum ich eine andere Formel tue, dh =IF(ROW()=5,A5+A4+A2+A1,A5+A4) und benutzen Sie das ... aber es gibt keine echte Logik dafür, warum ich manuell bearbeiten muss, könnte ich arbeiten - aus dem Grund würde ich nur wie ein schöne visuelle Erinnerung an diese zufälligen Zellen, dass die Formel nicht wie die anderen ist.

Edit: Beachten Sie, dass die obigen Formeln sind Weg vereinfacht. Meine tatsächlichen sind ein wenig komplex. Ich suche auch eine allgemeine Antwort darauf. Wenn ich nur für meine Zwecke denke, könnte ich vielleicht überprüfen, ob, wenn die Formel mehr als zwei + darin enthält, markieren Sie die Zelle. ... aber ich bin an einem allgemeinen Weg interessiert, um diese Art von Problem zu lösen, das breiter angewendet werden könnte.

+2

So der kleine grüne Dreieck in der oberen linken Ecke ist nicht ausreichend? 8P –

+0

Vielleicht einen Kommentar hinzufügen (dh rotes Dreieck statt gelber Füllung). – pnuts

+0

Sie könnten allgemeinere Formeln verwenden: '= INDEX (A: A, ROW()) + INDEX (A: A, ROW() - 1)' dann können Sie den FORMULATEXT direkt vergleichen. –

Antwort

1

Hier ist eine schnelle VB-basierte Lösung, die ich mir ausgedacht habe. Wenn ich den speziellen Zellen einen Kommentar hinzufüge (was ich mache, um die Formel zu erklären/warum es anders ist), kann ich nach einem Kommentar suchen und ihn dann markieren.

diese Funktion der Arbeitsmappe hinzufügen:

Function has_Comment(cel As Range) As Boolean 
has_Comment = False 
If cel.Comment.Text <> "" Then 
    has_Comment = True 
End If 
End Function 

Dann wird eine einfache Bedingte Formatierung Formel:

=has_comment(B2) 

das, und ist relativ einfach funktioniert.

Edit: Ich fand auch, dass Sie dies tun können, die nicht auf einen Kommentar angewiesen ist. Zeigt nur einen Inconsistency Error.

Function has_inconsistency(cel As Range) As Boolean 
has_inconsistency = False 
If cel.Errors.Item(xlInconsistentFormula).Value = True Then 
    has_inconsistency = True 
End If 
End Function 
+1

Ich bin aufrichtig nicht versuchen, nur meine eigenen zu beantworten Frage (vor allem, wie ich sagte, ich bin auf der Suche nach einer Nicht-VB-Lösung!) - Nach dem Nachdenken, und die obigen Kommentare, nur gedacht, um dies als eine Note/Alternative hinzuzufügen. – BruceWayne

+2

Ich denke, Sie sind mit den Entscheidungen fest, die Sie nicht wirklich wollten: VBA oder R1C1 Referenzen. (Schade, dass FormulaText kein Flag zur Angabe von R1C1 hat) –

+0

@LordPeter - Ja, außer ich erstelle eine oder zwei Hilfssäulen (was ich zögern kann, da mein Blatt schon ziemlich groß ist). Ich habe mich auch immer gefragt, warum Excel keine eingebaute Formel wie '= get_R1C1 ([einige A1 Stilformel oder Referenz])' hat, die den R1C1 Stil einer Formel zurückgeben würde. – BruceWayne

2

Hier ist eine weitere Option für UDF:

Function findDifferent(Rng As Range) As Boolean 

findDifferent = Not (Rng.FormulaR1C1 = Rng.Offset(-1).FormulaR1C1 Or Rng.FormulaR1C1 = Rng.Offset(1).FormulaR1C1) 
End Function 

enter image description here

+0

Oh schön, das ist auch eine gute Idee: D – BruceWayne

+0

Sehr schön! Braucht nicht einmal eine Helper-Spalte. Sieht nach viel Arbeit aus, um das Standard-Warndreieck in eine Rückwand zu verwandeln! –

+0

@LordPeter - Für jetzt gehe ich mit dem vba, das ich unten verwendete, da es möglich ist, dass ich drei + Formeln in einer Reihe habe, die alle verschieden sind ... außer ich vermisse etwas, Scott prüft nur oben und unten (was zugegebenermaßen war das, was ich in meinem OP angegeben habe). – BruceWayne

Verwandte Themen