![]() |
Spaltennummer nach Excel-Spaltenstring umwandeln.
In Excel werden die Spaltenüberschriften ja mit Buchstaben Angezeigt. ( A,B,C,D....AA,AB,AC....usw)
Ich benötige eine Funktion, bei der ich die Spaltennummer übergebe und diese Excelüberschrift erhalte. z.B.
Delphi-Quellcode:
result:=GetSpreadsheetColname(28); // -> Ergebnis = 'AB'
Kann ich mir natürlich selber schreiben. Vieleicht gibt's aber schon was fertiges. Manchmal sieht man ja den Wald vor lauter Bäumen nicht. |
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Moin.
Ich wüsste nun auch nichts fertiges, müsste man wohl selbst schreiben. Eine Funktion die immer aufgerufen wird, solange
Code:
immer den entsprechenden Buchstaben und die Differenz zu 26 zurückgibt. Mit der Differnz dann wieder in die Funktion, usw..
Zahl < 26
|
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Mit der hier beschriebenen Funktion klappt das :
![]() |
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Wenn's in Delphi berechnet werden soll, vllt. so ungefähr:
- Wenn n<=26 dann CHR(64+n) - Wenn n<=26*26 dann CHR(64+(n div 26))+CHR(64+(n mod 26)) |
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Delphi-Quellcode:
Das könnte funktionieren. Es konvertiert einfach eine Dezimalzahl in eine Zahl zur Basis 26, wobei die 'Ziffern' der neuen Zahlenbasis unseren Buchstaben A-Z entsprechen.
Function ExcelSpalte (Nummer : Integer : String;
Var result : string; Begin if (nummer<=0) raise new exception.Create('Nummer muß > 0 sein'); result := ''; repeat result := Result+chr(64+nummer mod 26); nummer := nummer div 26; until nummer = 0; // return result; so macht man das in C#, aber ist das C#? Nein. Delphi, also... weg. end; |
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Wobei es, wenn ich mich gerade nicht verdenke, glaub ich heißen müsste:
Delphi-Quellcode:
und man muss an den Grenzfällen aufpassen, z.B. n=26.
result := chr(65+nummer mod 26) + result;
Das geht dann in die Hose. |
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Wenn die 1 ein 'A' sein soll, müssen 64 addiert werden und nicht 65. Außerdem wird es vermutlich Probleme geben, wenn Nummer glatt durch 26 teilbar ist, aber das ließe sich mit einem Schreibtischtest herausfinden.
|
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Zitat:
|
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Ich denke, es ging ihm eher um die Vorgehensweise als um funktionierenden Out-of-the-box-Code.
|
AW: Spaltennummer nach Excel-Spaltenstring umwandeln.
Zitat:
Das Problem mit direkt durch 26 teilbar muss man mit einem
Code:
abfangen.
n div 26
Da weiß man dann, wie viele Stellen mindestens mit 'A' belegt werden sollten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz