Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#4

AW: Wie bekomme ich den EXCEL SPaltenINDEX von einer INteger?

  Alt 11. Mai 2017, 10:01
Hmm..


jetzt mal ungetested


Delphi-Quellcode:
Function IntToStringExcel(i: Integer): AnsiString;
Var
   s: AnsiString;
Begin
   If i < 27 Then
   Begin
      s := chr(i + pred(Ord('A')));
   End
   Else
   Begin
      s := chr((pred(i) Div 26) + pred(Ord('A'))) + chr((pred(i) Mod 26) + Ord('A'));
   End;
   InttoStringExcel := s;
End;
Dass funktioniert nur bis ZZ..
Bei neuen Excels geht es mit AAA weiter

Hab da mal was gebastelt, verwendbar für diverse BaseCodierungen.
Bei Excel musste mit nem OffSet gearbeitet werden.

Delphi-Quellcode:
function IntToBase(AValue: Integer; ABaseStr : string; Offset : integer = 0): string;
var
  BaseCount : integer;
  BasePos : integer;
begin
  Result := '';
  BaseCount := Length(ABaseStr);
  if (AValue > Offset) then begin
    while (AValue > 0) do begin
      AValue := AValue - Offset;
      BasePos := AValue mod BaseCount;
      Result := ABaseStr[BasePos+1] + Result;
      AValue := AValue div BaseCount;
    end;
  end else Result := ABaseStr[1];
end;


Excel (CollIndex > 0)
IntToBase(CollIndex, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',1)

HEX
IntToBase(IntValue, '0123456789ABCDEF')

Base8
IntToBase(IntValue, '01234567')
  Mit Zitat antworten Zitat