Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB4, VB5, VB6 | 26.04.01 |
Umrechnung Zahl in Excelspalte und umgekehrt Diese Funktion gibt für eine Zahl die äquivalente Bezeichnung einer Excelspalte zurück und umgekehrt. | ||
Autor: gGolob | Bewertung: | Views: 22.159 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Es ist schon manchmal eigenartig. Da redet man von der 5. Spalte, in Excel ist das aber nicht Spalte 5, sondern Spalte E und auch eben nicht die 16. Spalte, sondern die Spalte P. Die beiden nachfolgenden Routinen rechnen eine Zahl in ihre äquivalente Bezeichnung einer Excel-Spalte um, und umgekehrt.
' GetExcelCol ' Recordsetindex in eine Excelspalte "umrechnen" ' z.B. 4 => "D", 27 => "AA" ' ' bInitialCall gibt an, ob die Zählung bei 0 (False) ' oder bei 1 erfolgen soll (bInitialCall = True) Public Function GetExcelCol(ByVal lIdx As Long, _ Optional ByVal bInitialCall As Boolean = True) As String If (bInitialCall) Then lIdx = lIdx + 1 If (lIdx = 0) Then Exit Function GetExcelCol = GetExcelCol((lIdx - 1) \ 26, False) + _ Chr(65 + (lIdx - 1) Mod 26) End Function ' GetIndexOfExcelCol ' Excelspalte in Recordsetindex "umrechnen" ' z.B. "D" => 4, "AA" => 27 Public Function GetIndexOfExcelCol(ByVal strCol As String, _ Optional ByVal slevel As Integer = 0, _ Optional ByVal bInitialCall As Boolean = True) As Long If (slevel = Len(strCol)) Then Exit Function GetIndexOfExcelCol = GetIndexOfExcelCol(strCol, _ slevel + 1, False) + ((Asc(Mid(strCol, Len(strCol) - _ slevel, 1)) - 65) + 1) * 26 ^ slevel + _ IIf(bInitialCall, -1, 0) End Function
Umrechnung Zahl nach Excel-Spaltenbezeichnung
strCol = GetExcelCol(17) ' R strCol = GetExcelCol(100) ' CW
Umrechnung Excel-Spaltenbezeichnung nach Zahl
lngZahl = GetIndexOfExcelCol("R") ' 17 lngZahl = GetIndexOfExcelCol("CW") ' 100