In manchen Situationen kann es sinnvoll oder notwendig sein, dass aus einer Spaltennummer der Spaltenbuchstabe ermittelt wird oder dass umgekehrt aus einem Spaltenbuchstaben die Spaltennummer ermittelt wird. In diesem Beispiel zeigen wir Ihnen, wie sich dem Spaltenbuchstaben F die Spaltennummer 6 und umgekehrt aus Spaltennummer 12 der Buchstabe L ableiten lässt.
1. Ermittlung des Spaltenbuchstaben aus der Spaltennummer
In diesem Beispiel wird die Spaltennummer in Zelle C7 eingegeben und der ermittelte Spaltenbuchstabe wird in Zelle E7 ausgegeben, siehe Abbildung 1.
Abbildung 1
Um den Spaltenbuchstaben aus der Spaltennummer auszulesen kann folgendes VBA-Makro verwendet werden.
Sub Spaltenbuchstabe_aus_Spaltennmmer_ermitteln() '** Dimensionierung der Variablen Dim lngSp As Long Dim strAdr As String Dim lngCnt As Long Dim strErg As String '** Erfasste Spaltennummer lngSp = ActiveSheet.Range("C7").Value '** Aus Spaltennummer ermittelte Adresse strAdr = ActiveSheet.Cells(1, lngSp).Address '** Ermittlung des zweiten $-Zeichens in der Zelladresse lngCnt = InStr(2, strAdr, "$") - 1 '** Extrahieren der Spalten-Buchstaben aus Zelladresse strErg = WorksheetFunction.Substitute(Left(strAdr, Len(strAdr) - (Len(strAdr) - lngCnt)), "$", "") '** Ausgabe der reinen Spaltenbuchstaben ActiveSheet.Range("E7").Value = strErg End Sub
2. Ermittlung der Spaltennummer aus dem Spaltenbuchstaben
Der umgekehrte Fall funktioniert im Prinzip genauso. Der in Spalte C17 erfasste Spaltenbuchstabe wird in die entsprechende Spaltennummer umgewandelt und in Zelle E17 ausgegeben, siehe Abbildung 2.
Abbildung 2
Verwenden Sie dazu das folgende Makro.
Sub Spaltennummer_aus_Spaltenbuchstabe_ermitteln() '** Dimensionierung der Variablen Dim strSp As String Dim strAdr As String Dim lngCnt As Long '** Erfasster Spaltenbuchstabe strSp = ActiveSheet.Range("C17").Value '** Aus Spaltenbuchstabe ermittelte Adresse strAdr = ActiveSheet.Range(strSp & "1").Address '** Extrahieren der Spalten-Nummer aus Zelladresse strErg = Range(strAdr).Column '** Ausgabe der reinen Spaltenbuchstaben ActiveSheet.Range("E17").Value = strErg End Sub
Mit diesen beiden VBA-Codes lassen sich Buchstaben und Nummern beliebig umwandeln. Die Beispieldatei können Sie über den unten stehenden Link herunterladen.
Mit einem ähnlichen Ansatz kann per VBA-Funktion die Spaltennummer der aktuellen Spalte ausgelesen und in eine Zelle geschrieben werden.