Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Excel Spalte in Buchstaben für Range umrechnen
zurück: RecordsetViewer - Anzeige von Recordsets beim Debuggen weiter: Access-Fenster ausblenden Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
20. Okt 2009, 15:26
Rufname:

Excel Spalte in Buchstaben für Range umrechnen - Excel Spalte in Buchstaben für Range umrechnen

Nach oben
       Version: (keine Angabe möglich)

Hallo zusammen,

hier mal eine kleine Funktion, für die ich einige Zeit geknobelt habe.
Wenn man in Access Excel-Funktionen mit Range angeben möchte und dazu den Buchstabencode verwenden möchte (Spaltenbezeichnungen sind in Excel standardmäßig Buchstaben), muß man die Spaltennummer in den Buchstabencode umrechnen.

Normalerweise würde man sagen "ist ja ein Zahlensystem mit 26 Buchstaben, also einfach wie bei einer Hexadezimalzahl, die hat halt nur 16 Ziffern". Entsprechend würde man auch die Umrechnung anwenden.

In Excel hat das ganze einen Haken: Es gibt keine 0.
In einem Hexadezimalsystem (oder einem beliebigen anderen) würde es die Zahl 0 geben, entsprechend ist ein Überlauf von 15 auf 16 in Hex eine 10.
In Excel beginnt man aber mit Spalte 1=A. Und der Überlauf beginnt bei 26 auf 27, was dann "AA" ist. In einem Zahlensystem müßte A also eigentlich 0 sein, aber was ist dann "AA", "00"? Und "AAA" wäre dann "000", das paßt nicht. Entsprechend ist "A" wohl immer 1, der Überlauf von Z nach AA würde dann zahlenmäßig formuliert "11" lauten.
Ohne 0 läßt sich nur schwer umrechnen, nach einigem Knobeln ist dabei dann die folgende Funktion entstanden, die auch mit 16384 Spalten von Office 2007 offenbar noch in allen Fällen funktioniert. Bei noch größeren Zahlen würde es wohl spätestens beim nächsten Überlauf Probleme geben, aber dazu braucht's wohl mindestens erstmal ein Office 2017...Smile

Code:
' Berechnet aus einer Zahl den entsprechenden Buchstabencode für die Excel-Spaltendarstellung
Public Function fnXCL_CalcColumn(intColumn As Integer) As String

    Dim strLetter As String
    Dim strLetter2 As String
    Dim strLetter3 As String

    ' erste Stelle
    strLetter = Chr((64 + intColumn) - Int(intColumn / 26) * 26)
    If strLetter = "@" Then strLetter = "Z"
   
    ' zweite Stelle
    ' ab 703 fängt "AAA" an
    If intColumn < 703 Then
        strLetter2 = Chr(64 + (((Int((intColumn - 1) / 26) * 26) / 26) - 26 * (Int((intColumn - 1) / 702))))
    Else
        strLetter2 = Chr(64 + ((Int((intColumn - 1) / 26) * 26) / 26) - 26 * (Int(((intColumn - 1) - 702) / 676) + 1))
    End If
    If strLetter2 = "@" Or intColumn < 27 Then strLetter2 = ""
   
    ' dritte Stelle
    If intColumn >= 703 Then strLetter3 = Chr(64 + Int((((intColumn - 1) - 702) / 26) / 26) + 1)
   
    fnXCLCalcColumn = strLetter3 & strLetter2 & strLetter
End Function


Wenn jemand noch eine Idee hat, wie man das ganze vielleicht noch besser machen kann, immer gern.
Zum Testen eigener Funktionen sollte man sich die besonders problematischen Zahlen 26,27, 702,703, 2054, 2055 und 16224 als Beispiele mal heranziehen.

Bisherige Funktionen, die ich im Internet entdecken konnte, sind bei größeren Zahlen alle gescheitert.

Viel Spaß damit...

Christian
ebs17
Learning by Doing - Bastler


Verfasst am:
20. Okt 2009, 21:38
Rufname:
Wohnort: Reinsberg

AW: Excel Spalte in Buchstaben für Range umrechnen - AW: Excel Spalte in Buchstaben für Range umrechnen

Nach oben
       Version: (keine Angabe möglich)

Die gezeigte Funktion deckt einen Bereich bis Spalte 18278 (= ZZZ) ab.

Folgende Alternative deckt den Bereich bis Spalte 475254 (=ZZZZ) ab. Durch den gewählten Ansatz scheint sie auch leicht erweiterbar zu sein (falls sich die Notwendigkeit ergibt):
Code:
Public Function fXLNumberToLetter(iColumn As Long) As String
   Dim s1 As Long, s2 As Long, s3 As Long, s4 As Long
   
   s2 = iColumn \ 26
   s1 = iColumn Mod 26
   If s1 = 0 Then
      s1 = 26
      s2 = s2 - 1
   End If
   s3 = (s2 - 1) \ 26
   s4 = (s3 - 1) \ 26
   
   s2 = s2 - s3 * 26
   s3 = s3 - s4 * 26
   
   fXLNumberToLetter = Replace(Chr(s4 + 64) & Chr(s3 + 64) & Chr(s2 + 64) & _
         Chr(s1 + 64), "@", "")
End Function

_________________
Mit freundlichem Glück Auf!

Eberhard
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
20. Okt 2009, 23:27
Rufname:


AW: Excel Spalte in Buchstaben für Range umrechnen - AW: Excel Spalte in Buchstaben für Range umrechnen

Nach oben
       Version: (keine Angabe möglich)

Hallo Eberhard,

danke, Deine Funktion gefällt mir sogar noch besser, und sie reicht bis Office 2025... Laughing

Gruß

Christian
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage - Überprüfen, ob Spalte vorhanden 4 Xsandl 2914 30. Mai 2006, 08:27
Xsandl Abfrage - Überprüfen, ob Spalte vorhanden
Keine neuen Beiträge Access Tabellen & Abfragen: Zeile in Spalte transformieren (mit Kriterien) 5 captfrag 908 29. Mai 2006, 13:05
Willi Wipp Zeile in Spalte transformieren (mit Kriterien)
Keine neuen Beiträge Access Tabellen & Abfragen: Zeichen und Buchstaben in Abfrage zählen 0 Transputor 1107 24. Mai 2006, 17:40
Transputor Zeichen und Buchstaben in Abfrage zählen
Keine neuen Beiträge Access Tabellen & Abfragen: eine spalte - verschiedene Dezimalstellen 7 Gast 807 06. Apr 2006, 15:00
SGast eine spalte - verschiedene Dezimalstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Spalte mit Berechnung hinzufügen 1 Enigma 893 25. März 2006, 22:58
Nouba Spalte mit Berechnung hinzufügen
Keine neuen Beiträge Access Tabellen & Abfragen: Aktuelle Summe der Werte einer Spalte 14 simsy 3001 15. März 2006, 16:56
simsy Aktuelle Summe der Werte einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: Daten aus einer Spalte in eine Zeile kopieren????!!! 1 kingjim_ 773 08. Jan 2006, 00:37
accessmichel Daten aus einer Spalte in eine Zeile kopieren????!!!
Keine neuen Beiträge Access Tabellen & Abfragen: BESTIMMTE Daten einer Zeile in Spalte umwandeln 7 Gast 2403 30. Dez 2005, 13:56
KirstenS BESTIMMTE Daten einer Zeile in Spalte umwandeln
Keine neuen Beiträge Access Tabellen & Abfragen: mehrere Zahlen in einer Spalte??? 11 FirefighterBM 701 05. Dez 2005, 16:58
Willi Wipp mehrere Zahlen in einer Spalte???
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate innerhalb einer Spalte 1 Gast 1099 14. Okt 2005, 17:23
lupos Duplikate innerhalb einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: Spalte in einer Abfrage über Formular mehrfach abfragen 2 terat 771 28. Sep 2005, 09:07
terat Spalte in einer Abfrage über Formular mehrfach abfragen
Keine neuen Beiträge Access Tabellen & Abfragen: Eurowert automatisch zu DM-Wert in anderer Zelle umrechnen 4 Peter2 3109 08. Sep 2005, 16:34
Peter2 Eurowert automatisch zu DM-Wert in anderer Zelle umrechnen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP Forum