Wie kann man feststellen, ob eine Excel-Zelle eine Formel enthält oder fest codiert ist?

17

Hat jemand einen speziellen Tipp (nicht VBA bevorzugt), um systematisch zu erkennen, ob eine Zelle einen fest codierten Wert hat oder eine abgeleitete Formel ist?

Ich habe es mit einigen Daten zu tun, in die chaotische Zwischensummen eingebettet sind, und ich versuche herauszufinden, ob ich die Rohdaten trennen kann.

YGA
quelle
Hilft der Modus "Formeln anzeigen" (Strg + `)?
SBLAIR
Es tut es, aber ich würde es nicht als "systematisch" betrachten - es erfordert, dass ich die Zwischensummenlinien von Hand wegsprenge.
YGA

Antworten:

8

Verwenden Sie die bedingte Formatierung. Wählen Sie die Option "Verwenden Sie eine Formel, um zu bestimmen, welche Zellen formatiert werden sollen" und geben Sie "= NOT (Cellhasformula)" ein. Dadurch wird alles formatiert, was fest codiert ist.

Stephen
quelle
8
Das war also nicht die vollständige Antwort, aber es ist eigentlich ziemlich elegant. Die vollständige Antwort finden Sie unter: j-walk.com/ss/excel/usertips/tip045.htm Der Schlüssel ist, dass Sie zuerst einen Namen (über Formeln -> Name Manager) mit dem Namen "Cellhasformula" erstellen müssen, der sich auf "the" bezieht mystische Formel = GET.CELL (48, INDIRECT ("rc", FALSE)). Wie der Link sagt, verwendet die Formel GET.CELL, das in der XLM-Makrosprache (dem Vorgänger von VBA) vorliegt und nicht direkt in einem Arbeitsblatt verwendet werden kann. Das Argument "48" bewirkt, dass GET.CELL "True" zurückgibt, wenn die Zelle eine Formel enthält. Das INDIRECT erstellt im Grunde genommen einen Verweis auf jede Zelle im ausgewählten Bereich.
YGA
Ich habe die Antwort bearbeitet, um diese Details einzuschließen. Thanks @YGA
Alain
15

Wählen Sie die fraglichen Zellen aus, drücken Sie Ctrl+ Gund wählen Sie dann, Specialum das folgende Dialogfeld zu erhalten:

Gehe zu Spezial Dialogfeld

Geben Sie dann den gewünschten Zelltyp an und klicken Sie auf. OKNur diese Zelltypen bleiben ausgewählt.

Mike Fitzpatrick
quelle
8

Ab Excel 2013 können Sie Folgendes tun:

=ISFORMULA(reference)

Hier die komplette Dokumentation

David K.
quelle
3
=iferror(Formulatext(cell),"Not Formula")

oder um nur die Formeln anzuzeigen:

=iferror(Formulatext(cell),"")
Jack
quelle
Wenn Sie LibreOffice Calc anstelle von Excel verwenden, ersetzen Sie formulatext () durch formula ().
Fixer1234
2

Zwei andere Methoden sind zu

  1. Verwenden Sie ein Mapping-Tool wie my Mappit! Add-In (das als vertrauenswürdiges Add-In ausgeführt werden kann)
  2. Sie können die sehr nützliche Problemumgehung für XLM- / Bereichsnamen verwenden, mit der Sie fest codierte Zellen, Formeln, verknüpfte Zellen usw. in Echtzeit einfärben können. Im Gegensatz zu VBA sind hierfür keine Programmierkenntnisse erforderlich
brettdj
quelle
1

Ich weiß, Sie sagten, dass Nicht-VBA bevorzugt ist, aber wenn Sie keine anderen Lösungen finden, hat das Range-Objekt eine HasFormula-Eigenschaft.

Rückgabe: True, wenn alle Zellen im Bereich Formeln enthalten; Falsch, wenn keine der Zellen im Bereich eine Formel enthält. sonst null.

Quelle: http://msdn.microsoft.com/en-us/library/bb208626%28v=office.12%29.aspx

Patrick Seymour
quelle
1

Wenn Sie die Excel-Datei in einem makrofreien Arbeitsmappenformat speichern möchten, sollten Sie sowohl VBA als auch Makros vermeiden (dh die in anderen Antworten vorgeschlagenen XL4 / XLM-Ansätze). In dieser Antwort ging ich von einer makrofreien Excel-Datei aus.

Wenn Sie MS-Excel 2013 verwenden, können Sie Folgendes verwenden:

=ISFORMULA(reference)

Wenn Sie ältere MS-Excel-Versionen (z. B. 2010, 2007) verwenden, gibt es keine echte Funktion, um festzustellen, ob eine Zelle eine Formel enthält. Sie können es jedoch approximieren mit:

=IF(OR(ISBLANK(reference);CELL("prefix";reference)<>"");FALSE;IF(CELL("type";reference)="l";TRUE;"MAYBE"))

Die obige Funktion gibt Folgendes zurück:

  • TRUE für Zellen, die eine Formel enthalten, die zu String-Daten führt.
  • FALSE für Zellen, die ein String-Literal enthalten oder leer sind.
  • "MAYBE" für Zellen, die einen Booleschen Wert, eine Zahl oder ein Datum enthalten, unabhängig davon, ob dieser Wert ein Literal oder das Ergebnis einer Formel ist.
Julien Kronegg
quelle
1

Weit hinter dem ursprünglichen Datum, aber wenn es für irgendjemanden von Nutzen ist, habe ich es geschafft, dies zu umgehen, indem ich den Zellenbereich ausgewählt und dann mit Ersetzen (Strg + H) festgelegt habe, dass in "Formeln" gesucht und ein Gleicher ersetzt wird =mit einem Apostroph gleich'=

Dies brachte alle Formeln, aber natürlich auch Dinge umwandeln würde, wenn $ C $ 1 enthalten =if($A1=$B1,"Match","Different")zu'=if($A1'=$B1,"Match","Different")

Beachten Sie, dass das A1'=B1in der Mitte der Formel problematisch sein kann, aber immer noch bedeutet, dass Sie die Formeln sehen, wenn auch nicht pragmatisch. Könnte die SUBSTITUTE-Funktion verwenden, um es wieder zu ändern, so dass $ D $ 1 enthält =SUBSTITUTE(C1,"'=","="), dann kopiere es einfach in den Editor und füge es wieder in $ E $ 1 ein

Die andere Möglichkeit wäre, Formeln anzuzeigen, aber dies würde Formeln für jede Zelle anzeigen, nicht nur für einen ausgewählten Bereich.

Aubs
quelle
1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function
George Skelton
quelle
Können Sie uns kurz erklären, was hier vor sich geht? :)
Bertieb
Stecke es einfach in ein VBA-Modul, obwohl mir klar ist, dass das OP kein VBA wollte. Aber das ist auch der Grund, warum ich es benutze.
George Skelton
Das ist keine wirkliche Erklärung
Bertieb