wake-up-neo.com

Excel-Referenz auf die aktuelle Zelle

Wie erhalte ich einen Verweis auf die aktuelle Zelle?

Wenn ich beispielsweise die Breite von Spalte A anzeigen möchte, könnte ich Folgendes verwenden:

=CELL("width", A2)

Ich möchte jedoch, dass die Formel ungefähr so ​​lautet:

=CELL("width", THIS_CELL)
57
Steven

Erstellen Sie eine benannte Formel namens THIS_CELL

  1. Wählen Sie im aktuellen Arbeitsblatt die Zelle A1 aus (dies ist wichtig!)
  2. Name Manager öffnen (Ctl + F3)
  3. Klicken Sie auf New...
  4. Geben Sie "THIS_CELL" (oder nur "THIS", was meine Präferenz ist) in Name: ein.
  5. Geben Sie die folgende Formel in Refers to: ein.

    =!A1

    HINWEIS: Stellen Sie sicher, dass Zelle A1 ausgewählt ist. Diese Formel ist relativ zur ActiveCell.

  6. Wählen Sie unter Scope:Workbook aus.

  7. Klicken Sie auf OK und schließen Sie den Name Manager.

Verwenden Sie die Formel im Arbeitsblatt genau wie gewünscht

=CELL("width",THIS_CELL)

EDIT: Bessere Lösung als mit INDIRECT()

Es ist erwähnenswert, dass die Lösung, die ich gegeben habe, aus zwei Gründen der Lösung vorgezogen werden sollte, die die Funktion INDIRECT() verwendet: 

  1. Es ist nicht flüchtig, während INDIRECT() eine flüchtige Excel-Funktion ist und daher die Arbeitsmappenberechnung drastisch verlangsamt, wenn sie häufig verwendet wird.
  2. Dies ist viel einfacher und erfordert nicht das Umwandeln einer Adresse (in Form von ROW()COLUMN()) in eine Bereichsreferenz einer Adresse und wieder zurück in eine Bereichsreferenz. 

EDIT: Siehe auch diese Frage für weitere Informationen zu Arbeitsmappen, blattabhängigen benannten Bereichen.

EDIT: Siehe auch @ imix's Antwort für eine Variation dieser Idee (unter Verwendung von RC-Stilreferenzen). In diesem Fall können Sie =!RC für die THIS_CELL-Bereichsformel verwenden oder einfach RC direkt verwenden. 

32
Rick Teachey

Einige Jahre zu spät:

Der Vollständigkeit halber möchte ich noch eine Antwort geben:

Gehen Sie zuerst zu Excel-Optionen -> Formulas und aktivieren Sie R1C1-Referenzen. Dann benutze

  =CELL("width", RC)

RC bezieht sich immer auf die aktuelle Zeile, die aktuelle Spalte, d. h. "diese Zelle".

Rick Teacheys Lösung ist im Grunde ein Tweak, um dasselbe im A1-Referenzstil zu ermöglichen (siehe auch GSergs Kommentar zu Joeys Antwort und Notiz seinem Kommentar zu Patrick McDonalds Antwort).

Prost
:-)

32
imix

Du könntest benutzen

=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
31

=ADDRESS(ROW(),COLUMN(),4) gibt uns die relative Adresse der aktuellen Zelle an. =INDIRECT(ADDRESS(ROW(),COLUMN()-1,4)) gibt uns den Inhalt der Zelle links der aktuellen Zelle =INDIRECT(ADDRESS(ROW()-1,COLUMN(),4)) gibt uns den Inhalt der Zelle über der aktuellen Zelle (ideal zur Berechnung der laufenden Summen)

Wenn Sie die Funktion CELL () verwenden, werden Informationen zur letzten Zelle zurückgegeben, die geändert wurde. Wenn wir also eine neue Zeile oder Spalte eingeben, ist die Referenz CELL () betroffen und nicht mehr die aktuelle Zelle.

24
andy

A2 ist bereits eine relative Referenz und ändert sich, wenn Sie die Zelle verschieben oder die Formel kopieren.

7
Joey

Ohne INDIRECT (): =CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )

5
Cosmin Rus
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)
4
Sebasitankg

Es gibt einen besseren Weg, der sicherer ist und Ihre Anwendung nicht verlangsamt. Wie Excel eingerichtet ist, kann eine Zelle entweder einen Wert oder eine Formel haben. Die Formel kann sich nicht auf eine eigene Zelle beziehen. Sie erhalten eine Endlosschleife, da der neue Wert eine weitere Berechnung verursachen würde. Verwenden Sie eine Helfer-Spalte, um den Wert basierend auf dem Wert in der anderen Zelle zu berechnen. Zum Beispiel:

Spalte A ist wahr oder falsch, Spalte B enthält einen Geldwert, Spalte C enthält die folgende Formel: = B1

Um nun zu berechnen, dass Spalte B in einem bedingten Format nur gelb hervorgehoben wird, wenn Spalte A True ist und Spalte B größer als Null ist ...

= UND (A1 = wahr, C1> 0)

Sie können dann die Spalte C ausblenden

1
Ester

Ich fand den besten Weg, damit umzugehen (für mich), folgendes zu verwenden:

Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select

Hoffe das hilft.

1
Barry LaBonte

In Tabellen können Sie [@] verwenden, das (leider) Excel automatisch zu Table1[@] erweitert wird, aber es funktioniert. (Ich verwende Excel 2010)

Wenn Sie beispielsweise zwei Spalten [Change] und [Balance] haben, fügen Sie dies in die Spalte [Balance] ein:

=OFFSET([@], -1, 0) + [Change]

Beachten Sie natürlich, dass dies von der Reihenfolge der Zeilen abhängt (wie bei den meisten anderen Lösungen) und ist daher etwas anfällig.

1
Jannes

BEARBEITEN: Folgendes ist falsch, da Cell ("width") die Breite der zuletzt geänderten Zelle zurückgibt.

Cell("width") gibt die Breite der aktuellen Zelle zurück, sodass Sie keinen Verweis auf die aktuelle Zelle benötigen. Wenn Sie jedoch eine benötigen, gibt cell("address") die Adresse der aktuellen Zelle zurück. Wenn Sie also einen Bezug zur aktuellen Zelle benötigen, verwenden Sie indirect(cell("address")). Siehe Dokumentation: http://www.techonthenet.com/Excel/formulas/cell.php

0
P. Myer Nore