Wie kommst du auf die Formel von einer Zelle und nicht den Wert?
Wie bekommt man den Literalwert (die Formel) aus einer Zelle anstatt das Ergebnis Wert?
BEISPIEL GEWÜNSCHTE:
- A2: "Foo"
- B3: "=A2" - so zeigt es "Foo"
- C3: "=ZELLE("Formel" B3)" zeigt "=A2"
Natürlich, CELL() nicht unterstützt, ist eine "Formel" - parameter, das ist nur für den Nachweis der Absicht. Ich habe mir über die Funktion Liste und nichts springt mich an.
ANWENDUNGSFALL:
Ich möchte einen Verweis auf eine andere Zeile, und basierend auf dieser Referenz erhalten Sie weitere Zellen aus der Zeile. Putting eine explizite Zeile Anzahl wird nicht funktionieren (z.B. B3 = "2"), da es nicht automatisch richtig, wenn Zeilen geändert werden. Konkret, ich möchte für mehrere Spalten in einer Zeile relativ zu den Spalten, die in einer anderen Zeile, und in der Lage sein zu ändern die relative Zeile an einem Ort zimmerreserviereung, ohne das Sie Bearbeiten jede dieser Spalten.
Normalerweise, um eine Zeile in relation zu einer anderen setzen Sie Spalte die Werte so aus: "=A2+5" und "=B2+10". Dies bedeutet, dass Eine Spalte "relative Zeile" Wert "+5" und Spalte B ist "relative Zeile" Wert "+ 10". Wenn Sie möchten, ändern Sie die relative Zeile (z.B. Zeile 56), die Sie ändern müssen jede der Spalten auf "=A56+5" und "=B56+10". Wie das zu erreichen ist dies durch die Bearbeitung nur eines Feldes?
Für ein praktisches Beispiel, betrachten Sie ein Blatt, das eine Liste der Aufgaben, und jeder kann markiert werden, wie "nach" einem anderen für Zwecke computing end-Datum, aber Sie würde gerne in der Lage, ändern Sie den Verweis Aufgabe zu unterstützen und eine N:1-Beziehung zwischen tasks.
[Update]
Tatsächlich, ich habe eine Lösung für den spezifischen Anwendungsfall. Aber ich bin immer noch neugierig auf die ursprüngliche Frage: der Zugriff auf die Formel, die hinter den Wert in einer Zelle.
LÖSUNG 1:
- A2: "=ZEILE()"
- B2: "Foo"
- C3: "=A2" zeigt "2" und auto-passt zu pflegen als Referenz Zeilen Hinzugefügt/entfernt
LÖSUNG 2:
Andere Lösung wäre, eine eindeutige "id" - Spalte und speichern Verweise von id, dann finden Sie die Zeile mit LOOKUP().
1. das beantwortet meine Frage, danke, aber wie könnte ich darauf zugreifen, mit der scripting-API? 2. INDIREKT ist nützlich, wenn Sie die Nummer der Zeile, wenn Sie wollen Präfix eine bestimmte Spalte, aber nicht an der Formel. Use Case: ich erweitert auf die Beschreibung der Frage.
So kann man sich nicht
=INDIRECT("A"&A1)+5
, =INDIRECT("B"&A1)+10
usw?Fast. Eine Voraussetzung ist, um in der Lage sein zu ändern die Referenz-Reihe in nur einem Ort. Also, wenn "1" ist die Zeile, die Sie wollen, Zeile 2 zu finden, dann Sie tun würde
B2: =A1
, C2: =INDIRECT("C"&B2)+5
, D2: =INDIRECT("D"&B2)+10
, wo A1: =ROW()
. Dann, wenn Sie möchten, ändern Sie die Zeile 2 die Werte werden relativ zur Zeile 42, dann ändern Sie einfach einen Ort B2: =A42
.Dann vielleicht nur B2:
=ROW(A42)
?InformationsquelleAutor Denis P | 2014-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
getFormula()
odergetFormulaR1C1()
Methoden, um die Formel einer Zelle.Beispiel adaptated von https://webapps.stackexchange.com/a/92156/88163
Die folgende benutzerdefinierte Funktion gibt die Formel der referenzierten Zelle, aber wenn der Verweis ist nicht gültig, wird eine Fehlermeldung zurückgegeben.
Beispiel für die Verwendung der oben genannten benutzerdefinierten Funktion
A2:
FOO
B3: Formel
=A2
, WertFOO
C3: Formel
=CELLFORMULA(B3)
, Wert=A2
InformationsquelleAutor Rubén
EDIT: Diese Antwort ist für den Anwendungsfall, in dem die Beschreibung des Problems, mit der Forderung, dies zu tun mit nur native Funktionen (kein Skripting).
Basierend auf Kommentare von AdamL auf die Frage, die Antwort ist, dass Sie nicht bekommen kann die Formel aus einer Zelle (nicht den Wert).
Jedoch für die tatsächliche Benutzung Fall war ich versucht zu lösen, =ZEILE(A42) kann verwendet werden, um einen Verweis zu einer bestimmten Zeile wird automatisch aktualisiert, mit änderungen an Zeilen.
In der Frage, vernachlässigte ich betonen, eine Anforderung, dies zu tun, ohne hinzufügen von scripting (nur für built-in-Funktionen). Ich Tat Zustand, dass in einem follow-up der Kommentar: "wie kann ich darauf zugreifen, ohne scripting"? Ich Stimme zu, dass es Antworten gibt, die besagt, dass es getan werden kann mit scripting. Daher ist die erste Aussage in diese Antwort ist richtig - es gibt keine eingebaute Funktion, um die Formel. Die zweite Aussage ist die richtige Lösung für den Anwendungsfall beschrieben. Wieder, der ursprüngliche Titel war falsch.
InformationsquelleAutor Denis P
Ich hatte das gleiche problem und habe versucht die Formel zu verwenden, Rubén erstellt, hatte aber eine Einschränkung. Ich konnte nicht Verwendung dieser Formel in der anderen (ich war versucht zu machen, ein mid()).
Also aus einem anderen Ansatz, der arbeitete:
InformationsquelleAutor Luiz Paulo Albers Magalhães
Versuchen Sie es mit
=formula(2,3)
wo werden die Koordinaten (Zeile # col #)Google-sheet Beispiel: https://docs.google.com/spreadsheets/d/1A1l0qdnNSHlJB-5DARGKDeIsbuCCLGuoYWm8sR29UTA/edit?usp=sharing
Zeigen die Formeln...
Und hier ist, wie es rendert...
Hinweis: Manchmal dauert es einen moment, um laden Sie die Formel, während welcher Zeit erhalten Sie, irgendeine Art von Fehler sagen "Daten laden..." oder so etwas.
Beachten Sie auch: ich habe keine Ahnung, warum das funktioniert, da
formula
ist nicht aufgeführt-Funktion für google sheets, aber ich habe es in einem Arbeitsblatt von mir. Vielleicht war die Idee, zu versuchen, diese kamen aus Excel oder sowas, ich erinnere mich nicht.function formula(r,c) { return SpreadsheetApp . getActiveSheet() . getRange(r,c) . getFormula() ; }
. Zu langsam, um praktisch zu sein in einer großen Tabellenkalkulation, aber nicht dienen, um zu verdeutlichen, dass das problem gelöst werden kann mit benutzerdefinierten Skripts.InformationsquelleAutor Dannid
Verwenden:
function =FORMULATEXT("cell")
InformationsquelleAutor bob