webentwicklung-frage-antwort-db.com.de

Wie erhalte ich den aktuellen Spaltennamen in Excel?

Mit welcher Funktion werden die aktuelle Zeilennummer und der aktuelle Spaltenname für eine Zelle in Excel abgerufen?

27
Jader Dias

Sie können dazu die Funktionen ROW und COLUMN verwenden. Wenn Sie das Argument für diese Formeln weglassen, wird die aktuelle Zelle verwendet. Diese können direkt mit der Funktion OFFSET oder jeder anderen Funktion verwendet werden, bei der Sie sowohl die Zeile als auch die Spalte als numerische Werte angeben können.

Wenn Sie beispielsweise in Zelle D8 =ROW() eingeben, wird der Wert 8 zurückgegeben. Wenn Sie in derselben Zelle =COLUMN() eingeben, wird der Wert 4 zurückgegeben.

Wenn Sie den Spaltenbuchstaben möchten, können Sie die Funktion CHAR verwenden. Ich empfehle die Verwendung von Buchstaben zur Darstellung der Spalte nicht, da es schwierig wird, Spaltennamen mit zwei Buchstaben zu verwenden (wobei die Verwendung von Zahlen sowieso logischer ist).

Wenn Sie dennoch den Spaltenbuchstaben erhalten möchten, können Sie einfach 64 zur Spaltennummer hinzufügen (64 ist ein Zeichen weniger als A). Wenn Sie also im vorherigen Beispiel den Wert der Zelle auf =CHAR(COLUMN()+64) setzen, wird der Wert zurückgegeben wäre D. Wenn Sie möchten, dass der Wert einer Zelle der Zellenstandort selbst ist, lautet die vollständige Formel =CHAR(COLUMN()+64) & ROW().


Nur zu Ihrer Information, ich habe 64 aus einer ASCII Tabelle erhalten. Sie können auch die Formel CODE verwenden, die aktualisierte Formel wäre also =CHAR(COLUMN() + CODE("A") - 1). Sie müssen 1 subtrahieren, da der Mindestwert von COLUMN immer 1 ist, und dann wäre der Mindestrückgabewert der gesamten Formel B.

Dies funktioniert jedoch nicht mit Spalten mit zwei Buchstaben. In diesem Fall benötigen Sie die folgende Formel, um die aus zwei Buchstaben bestehenden Spalten richtig zu analysieren:

=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()

Ich bin nicht sicher, ob es einen einfacheren Weg gibt oder nicht, aber ich weiß, dass das von Zelle A1 zu ZZ99 ohne Probleme funktioniert. Dies zeigt jedoch, warum es am besten ist, die Verwendung von buchstabenbasierten Spaltenkennungen zu vermeiden und sich an reine zahlenbasierte Formeln zu halten (z. B. die Verwendung der Spaltennummer anstelle von Buchstaben mit OFFSET).

32
Breakthrough

Probieren Sie die folgende Funktion aus:

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

Erklärung: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4 = relative Adresse. Das bedeutet, dass der zurückgegebene Wert keine '$' enthält. Für die Spalte 'AB' gibt der ADDRESS 'AB1' zurück. Der Ersatzmann entfernt die '1'.

34
Scot Sutton

Versuche dies

=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")

Dies gibt Ihnen genaue Spaltenüberschriften ohne $ usw.

5
gaurav aggarwal

Um den Spaltennamen zu erhalten, habe ich die folgenden Formeln verwendet.

Für eine bestimmte Zelle:

=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")

Für die aktuelle Zelle:

=SUBSTITUTE(CELL("address"),"$" & ROW(),"")

Probieren Sie diese Variante. Es funktioniert mit 3-Buchstaben-Spalten und hinterlässt kein "$" am Frontend:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")
2
Vikas Madaan

Geben Sie dies in eine beliebige Zelle ein:

Español :

=SI(ENTERO((COLUMNA()-1)/26)=0;"";CAR((ENTERO(COLUMNA()-1)/26)+64))&CAR(COLUMNA()-(ENTERO((COLUMNA()-1)/26)*26)+64)

Englisch :

=IF(INT((COLUMN()-1)/26)=0,"",CHAR((INT(COLUMN()-1)/26)+64))&CHAR(COLUMN()-(INT((COLUMN()-1)/26)*26)+64)

Sie können column () durch die Zeilennummer ersetzen.

2
sygn

Das wird auch funktionieren

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
2
edl

Leicht manuell, aber weniger VBA und eine einfachere Formel:

  • In einer Reihe von Excel, z. Zelle A1, geben Sie die Spaltennummer ein =column()
  • Geben Sie in der Zeile unten =Address(1,A1) ein.
  • Dies liefert das Ergebnis $A$1

Nachdem die Werte kopiert wurden, suchen und ersetzen Sie $ und 1 durch Leerzeichen.

2
Steve

Ein anderer möglicher Weg wäre, so etwas zu benutzen:

=INDIRECT("MySheet1!"&LOOKUP(COLUMN(),colid)&ROW())

Wenn sich colid auf einen named -Bereich bezieht, den Sie an anderer Stelle in der Arbeitsmappe erstellen würden und der aus zwei benachbarten Spalten mit mehreren Zeilen besteht: Die erste Spalte enthält die Zahlen 1 bis n, die der Zahl COLUMN() entspricht, und die zweite Spalte enthält die Buchstaben A - ZZ. oder wie viele Spaltenreferenzen Sie aufnehmen möchten. Die ROW() bleibt in Ordnung, da sie die Zeilennummer zurückgibt.

Wenn Sie also die obige Zeichenfolge in die Zelle A1 von "MySheet2" kopieren, wird sie als "=MySheet1!A1" ausgewertet und gibt den Wert zurück, den sie in der entsprechenden Zelle von "MySheet1" gefunden hat.

Auf diese Weise können Sie beispielsweise MySheet1 als Arbeitsbereich verwenden, neue Daten löschen und erneut einfügen. Formatierungen oder Berechnungen in MySheet2, die sich auf diese Inhalte beziehen, funktionieren weiterhin ordnungsgemäß mit den neuen Datensätzen auf der Zielregisterkarte Arbeitsblatt.

1
Tigger

Lösung für polnische Excel-Version:

  • für eine bestimmte Zelle:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • für die aktuelle Zelle:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
1
mla

So finden Sie die Spaltenüberschrift (d. H. Den Buchstaben):

=RIGHT(LEFT(ADDRESS(1,COLUMN()),LEN(ADDRESS(1,COLUMN()))-2),LEN(ADDRESS(1,COLUMN()))-3)
0
Hermen

Hier ist eine VBA, benutzerdefinierte Formel, Lösung. Es funktioniert mit Spalten mit 1, 2 und 3 Buchstaben.

Fügen Sie Folgendes in ein Codemodul ein:

Function COLUMNLETTER(Optional rng As Range) As String
    'Returns the Column Letter of the top left cell in rng.

    If rng Is Nothing Then Set rng = Application.Caller
    COLUMNLETTER = Left(rng.Address(0, 0), IIf(rng.Column > 26, IIf(rng.Column > 702, 3, 2), 1))

End Function

= COLUMNLETTER () in einer beliebigen Zelle gibt den Spaltenbuchstaben der Zelle zurück.
= COLUMNLETTER (B3) in einer beliebigen Zelle gibtBzurück.

Diese benutzerdefinierte Funktion eignet sich hervorragend zum Erstellen generischer Formeln in der Funktion INDIRECT.

0
GollyJer

Die folgende Formel funktioniert unabhängig davon, wo Sie sie ablegen (sie gibt den Spaltennamen zurück).

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
0
JorgeHernandez
=MID(ADDRESS(ROW(),COLUMN()),2,FIND("$",ADDRESS(ROW(),COLUMN()),2)-2)

Die Adressformel gibt den Spalten- und Zeilennamen zurück. Das zurückgegebene Format ist immer $(Column Letters)$(Row Numbers) - z. $AA$2 oder $XAA$243556

Wenn wir wissen, dass $ immer beim ersten Zeichen vorkommt, können wir die erste mittlere Formel verwenden, um Zeichen nach dem ersten $ -Zeichen (d. H. Dem zweiten Zeichen) zu ziehen.

Dann finden wir das nächste $ -Zeichen (da wir wissen, dass es nur zwei geben wird) und wir wissen, wie viele Zeichen sich zwischen dem ersten und dem zweiten Dollarzeichen befinden. Der Rest ist einfache Subtraktion.

0
Jon

versuche dies:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)
0
denz