Auf die Formel der Zelle statt auf den Wert in Excel verweisen?

Auf die Formel der Zelle statt auf den Wert in Excel verweisen?

Nehmen wir an, in A1 habe ich "=ROW()". Die Zelle zeigt „1“, da es sich um die erste Zeile im Blatt handelt.

Jetzt gebe ich in A2 "=A1" ein. Leider verweist dies auf den WERT von A1 und nicht auf die Formel. Wenn es auf die Formel verweisen würde, würde A2 stattdessen den Wert "2" ergeben (was ich möchte).

Wenn ich dann im Nachhinein die Formel in A1 ändere, dann ändert sich auch der Wert von A2, da dieser auf der Formel in A1 basiert.

Wie gehe ich dabei vor?

Antwort1

Dies ist mit Excel-Arbeitsblattfunktionen nicht nativ möglich. Wenn Sie diese Funktionalität benötigen, müssen Sie VBA verwenden.

Sie können das Ereignis Worksheet_Change() verwenden. Dieses wird ausgelöst, wenn der Zellinhalt geändert wird, aber nicht bei einer einfachen Neuberechnung. Es hat einen Parameter, der die geänderten Zellen angibt. Sie können diesen verwenden, um zu sehen, ob Sie etwas tun müssen. Dieser Code muss in den Codebereich für das von Ihnen verwendete Arbeitsblatt eingefügt werden. (Öffnen Sie VBA mit Alt+F11; doppelklicken Sie im linken Bereich auf das Arbeitsblatt. Sie sollten etwas wie „Microsoft Visual Basic –Dateiname- [Blattname(Code)]" in der Titelleiste.)

Aktualisieren Sie natürlich den Blattnamen und die Bereiche nach Bedarf im folgenden Code.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim test As Range, src As Range, dest As Range

    Set src = Worksheets("Sheet1").Range("A1")
    Set dest = Worksheets("Sheet1").Range("A2")
    Set test = Intersect(Target, src)
    If Not (test Is Nothing) Then
        dest.Formula = src.Formula
    End If
End Sub

Der obige Code kopiert die Formel exakt – wenn Sie in Zelle A1 auf Zelle F3 verweisen, haben Sie auch in Zelle A2 einen Verweis auf Zelle F3. Wenn Sie dies nicht möchten, ändern Sie die Zeile innerhalb der If-Anweisung in dest.FormulaR1C1 = src.FormulaR1C1. Dadurch werden alle relativen Verweise in Ihrer Formel entsprechend geändert.

Sie können zu einem größeren Bereich wechseln, destwenn Sie mehrere Zellen gleichzeitig basierend auf der Formel in Zelle A1 festlegen möchten.

Beachten Sie, dass die Formeln in den Zellen nicht automatisch wiederhergestellt werden, wenn Sie diese Zellen ändern. Wenn Sie also die Formel in A2 ändern, wird sie nicht automatisch wiederhergestellt, da wir die Aktualisierung nur durchführen, wenn sich Zelle A1 ändert. Wenn Sie sich dagegen schützen möchten, ändern Sie die Zeile

Set test = Intersect(Target, src)

Zu

Set test = Intersect(Target, Union(src, dest))

Antwort2

Sie können dies mit Tabellen erreichen (ab Excel 2007: Wählen Sie Ihren Bereich aus, dann: Einfügen – Tabelle;Die erste Zeile muss Titel enthalten).
Jedes Mal, wenn Sie eine Formel ändern, wird sie in der gesamten Spalte aktualisiert (oder Sie werden gefragt, ob Sie eine Aktualisierung wünschen, wenn die Formel in der Spalte vor der Änderung nicht dieselbe war).

Aktualisieren

HierSie finden eine detaillierte Beschreibung, wie Sie eine berechnete Spalte in einer Tabelle erstellen.
Wenn Sie nun die Formel in einer der Zellen ändern, wird die gesamte Spalte aktualisiert.(Büro-Unterstützung)
Wenn dies bei Ihnen nicht der Fall ist, stellen Sie sicher, dass unter Datei – Optionen – Korrektur – Registerkarte „AutoFormat während der Eingabe“ die Option „Formeln in Tabellen ausfüllen, um berechnete Spalten zu erstellen“ aktiviert ist.

verwandte Informationen