Suchen Sie nach einer "isFormula" -Formel für Google Spreadsheets

13

Gibt es eine Funktion, die feststellt, ob eine bestimmte Zelle einen einfachen (manuell eingegebenen) Wert oder eine Formel hat?

Epeleg
quelle

Antworten:

5

Mit diesem kleinen Schnipsel können Sie das tun.

Code

function isFormula(startcol, startrow) {
  // prepare string
  var str = String.fromCharCode(64 + startcol) + startrow;

  // retrieve formula
  var fCell = SpreadsheetApp.getActiveSpreadsheet()
    .getRange(str).getFormula();

  // return false if empty else true 
  return fCell ? true : false;
}

Verwendung

Bildbeschreibung hier eingeben

In dieser Antwort fand Tom Horwood einen Weg, die Verwendung von Anführungszeichen zu umgehen.

Beispiel

Fügen Sie das Skript unter Extras> Skripteditor hinzu und klicken Sie auf die Schaltfläche "Fehler", um die Authentifizierung zu aktivieren.

Ich habe eine Beispieldatei für Sie erstellt: Auf Formel prüfen

Jacob Jan Tuinstra
quelle
Ich bin gewandert ... Ihre Funktion erhält tatsächlich eine Zeichenfolge, die die Adresse einer Zelle ist isFormula2("A1"). Also habe ich versucht, eine neue Version davon zu erstellen: function isFormula2(cell) { return (cell.getFormula())!=""; } und ich habe erwartet, dass es mit aufrufbar ist, isFormula2(A1)aber dies scheint nicht zu funktionieren, und wenn ich versuche, es zu debuggen, wird es cellals undefiniert angezeigt geändert, damit es funktioniert, f(A1)anstatt mit f("A1")?
Epeleg
@epeleg Siehe meine überarbeitete Antwort.
Jacob Jan Tuinstra
:) Sie haben es also so geändert, dass anstelle der Adresse jetzt eine Spalte und eine Zeile angezeigt werden. gibt es hier keine syntax so dass der aufruf gerade wäre isFormula(a1)? (in MS Excel wäre es eine Funktion, die einen Bereichsparameter bekommt)
Epeleg
@epeleg Das nächste ist isFormula_1 ("A2: A2") , schauen Sie sich meine Beispieldatei an. Benutzerdefinierte Funktionen funktionieren auf diese Weise. Ohne die Anführungszeichen erhalten Sie den Wert. Mit Anführungszeichen den String, der als solcher verwendet werden kann, aber nicht kopiert / eingefügt werden kann. Die COLUMN and ROW-Lösung ist (unweigerlich) nur eine Umgehungslösung.
Jacob Jan Tuinstra
Welchen Wert würde eine benutzerdefinierte Funktion erhalten, wenn Sie sie mit isFormula (a1: a1) aufrufen? und was ist mit isFormula (a1: b2)?
Epeleg
9

Kurze Antwort

Verwenden Sie die integrierte Funktion ISFORMULA () .

Hintergrund und Erklärung

Ich glaube, ich habe gerade eine undokumentierte Formel in den neuen Google Sheets entdeckt. @Pnuts sagte, dass die CELLFormel nicht funktioniert hat (teilweise, weil sie nur in den neuen Google Sheets verfügbar ist), deshalb habe ich den Code in ein neues Google Sheet kopiert. Es wurde ein Fehler ausgegeben, der mir mitteilte, dass meine (benutzerdefinierte) Formel nur ein Argument und nicht zwei akzeptiert:
Bildbeschreibung hier eingeben

Das Umbenennen isFormulain etwas anderes führte zu einer funktionierenden benutzerdefinierten Funktion. Nachdem dies der Fall war, habe ich noch ein weiteres Google Sheet erstellt und die isFormulaFormel verwendet. Die Formel wird in der automatischen Vervollständigung nicht angezeigt, funktioniert aber:
Bildbeschreibung hier eingeben

Wenn die Formel in allen neuen Google Sheets verfügbar ist, ist dies die beste Antwort:

Formel

=isFormula(A1)

Hinweis

Nur in den neuen Google Sheets verfügbar. Ich habe ein paar andere Leute gebeten, die neue Formel zu bestätigen, und sie ist bestätigt. Da es nicht dokumentiert ist, ist seine Implementierung unsicher und es könnte verschwinden. Das ARRAYFORMULAfunktioniert mit dieser neuen Formel nicht.

Beispiel

Ich habe eine Beispieldatei für Sie erstellt: isFormula

Jacob Jan Tuinstra
quelle
nett. Google scheint meine Empfehlung anzunehmen :) Aber wie wechsle ich zu "New Google Sheets"?
Epeleg
interessant. Es funktioniert für mein Google Mail-Konto, aber nicht in meinem Google Apps-Konto ...
Epeleg
2
ISFORMULA () ist jetzt dokumentiert. Siehe support.google.com/docs/answer/6270316?hl=de
Rubén,
2

Es sieht so aus, als gäbe es eine versteckte integrierte Funktion ISFORMULA()von Google. Mir wurde klar, als ich meine eigene Funktion löschte und noch arbeitete. Ich habe es in einer neuen Tabelle versucht und funktioniert immer noch. Kein Cache-Problem.

Juan Pérez
quelle