Wie erhalte ich den aktuellen Spaltennamen in Excel?

30

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

Jader Dias
quelle
1
Ich fand nur die Funktionen aus LINund , COLaber das Problem ist , dass sie Zahlen zurückkehren, und ich brauche den Spalt Brief an INDIRECTihn.
Jader Dias
2
Sie können die OFFSETFunktion INDIRECTin diesem Fall zusammen mit oder anstelle der Formel verwenden. Wenn Sie jedoch Zeichenfolgen verwenden möchten, habe ich auch meine Antwort aktualisiert.
Durchbruch
Übrigens ist INDIRECT eine flüchtige Funktion, verwenden Sie sie daher sparsam. Es hört sich so an, als wäre OFFSET die bessere Wahl, wenn Sie die gewünschte Referenz auf eine Positionsberechnung stützen.
AdamV

Antworten:

33

Sie können die Verwendung ROWund COLUMNFunktionen , dies zu tun. Wenn Sie das Argument für diese Formeln weglassen, wird die aktuelle Zelle verwendet. Diese können direkt mit der OFFSETFunktion 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 =ROW()in Zelle D8 eingeben , wird der Wert 8 zurückgegeben. Wenn Sie in =COLUMN()dieselbe Zelle eingeben , wird der Wert 4 zurückgegeben.

Wenn Sie den Spaltenbuchstaben möchten, können Sie die CHARFunktion 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).

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


Nur zu Ihrer Information, ich habe 64 aus einer ASCII-Tabelle. Sie könnten auch die CODEFormel verwenden, so dass die aktualisierte Formel dies verwenden würde =CHAR(COLUMN() + CODE("A") - 1). Sie müssen 1 subtrahieren, da der Mindestwert von COLUMNimmer 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 dies von Zelle A1zu Zelle ZZ99problemlos funktioniert. Dies zeigt jedoch, warum es am besten ist, auf buchstabenbasierte Spaltenkennungen zu verzichten und sich an reine Zahlenformeln zu halten (z. B. die Spaltennummer anstelle des Buchstabens mit zu verwenden OFFSET).

Durchbruch
quelle
Es funktioniert nur für die ersten 26 Spalten. Aber das wird genügen.
Jader Dias
1
@Jader Dias, deshalb empfehle ich, dass Sie OFFSETstattdessen verwenden, die Sie Spalten als Zahlen angeben können. Unabhängig davon habe ich die Antwort mit einer Formel aktualisiert, um sie auf Spalten mit zwei Buchstaben zu erweitern.
Durchbruch
2
Ich weiß nicht, warum diese Antwort so viele Stimmen erhielt, wenn Scots Antwort so viel besser ist, außer dass er es nicht erklärt hat. Keine komplexe Formel erforderlich. Ich habe einen Kommentar hinzugefügt, um zu erklären, warum / wie es funktioniert.
Gerhard Powell
Dies funktioniert, bis Sie zu AA usw. wechseln, dann funktioniert es nicht mehr.
krystan honor
@krystanhonour verwenden Sie die letzte Formel aus meiner Antwort in diesem Fall ...However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Durchbruch
34

Probieren Sie die folgende Funktion aus:

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

Erläuterung: 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' ADDRESSwird 'AB1' zurückgegeben. Der Ersatzmann entfernt die '1'.

Scot Sutton
quelle
5

Versuche dies

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

Dies gibt Ihnen genaue Spaltenüberschriften ohne $ usw.

Gaurav Aggarwal
quelle
2

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.

sygn
quelle
2

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),"")
Vikas Madaan
quelle
2

Leicht manuell, aber weniger VBA und eine einfachere Formel:

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

Sobald Werte kopiert werden, finden und ersetzen $und 1mit leeren.

Steve
quelle
2

Das wird auch funktionieren

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
edl
quelle
Können Sie dem eine Erklärung hinzufügen?
ChrisF
1

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

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

Wo colidauf eine bezieht sie benannt Die erste Spalte enthält die Zahlen 1 bis n entsprechend die: Bereich würde man an anderer Stelle innerhalb des Arbeitsbuch mit mehreren Reihen, die zwei benachbarte Spalten erzeugen COLUMN()- ZZ, oder wie viele Spaltenreferenzen Sie Nummer, der zweite enthält die Buchstaben A unterbringen wollen. Das ROW()ist in Ordnung so wie es ist, um die Zeilennummer zurückzugeben.

Wenn Sie also den obigen String in die Zelle A1 von 'MySheet2' kopieren, wird er als ausgewertet =MySheet1!A1und gibt den Wert zurück, den er in der entsprechenden Zelle von gefunden hat MySheet1.

Auf diese Weise können Sie beispielsweise MySheet1neue Daten als Arbeitsbereich verwenden, löschen und erneut einfügen, während alle Formatierungen oder Berechnungen MySheet2, die sich auf diese Inhalte beziehen, weiterhin ordnungsgemäß mit den neuen Datensätzen aus dem Arbeitsblatt mit den Zielregisterkarten funktionieren.

Tigger
quelle
1

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();""); "$"; "")
mla
quelle
0

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 gibt B zurück .

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

GollyJer
quelle
0
=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)- zB $AA$2oder$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 (dh 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.

Jon
quelle
0

So finden Sie die Spaltenüberschrift (dh den Buchstaben):

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

Versuche dies:

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

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

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
Ausgezeichnet
quelle
-1

Versuche dies:

= WENN (SPALTE ()> 26, CHAR (SPALTE () / 26 + 64), "") & CHAR (MOD (SPALTE () - 1,26) + 65) & ROW ()

Diese Funktion ist wirksam bis "ZY1" oder Spalte = 701

Ayus
quelle
4
Bitte erweitern Sie diese Antwort, indem Sie erklären, was diese Funktionen sind.
Kevin Panko
Abrufen des aktuellen Spaltennamens in Excel, z. B. "A1", "B1", ..., sogar "AA1", "BA1", "CA1", ...
ayus
-1
=IF(COLUMN()>702,RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),4),3),IF(COLUMN()>26,RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),3),2),RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),2),1)))
mkltmsck
quelle