Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#3

AW: Excel,Spaltenkonvertierung, Übergang zu nächstem Buchstaben

  Alt 8. Sep 2015, 10:01
Suchst Du sowas?
Delphi-Quellcode:
program ExcelSpalten;
var
        i : Integer;
        k : Integer;
        m : Integer;
        s : String;
begin
  for i := 1 to 256 do begin
    s := '';
    k := i;
    while k > 26 do begin
      m := k mod 26;
      if m = 0 then begin
        s := Chr(m + 64 + 26) + s;
        k := (k div 26) - 1;
      end else begin
        s := Chr(m + 64) + s;
        k := k div 26;
      end;
    end;
    s := Chr(k + 64) + s;
    WriteLn(Format('i = %.3d -> Spaltenname = %s - (k = %.3d)',[i,s,k]));
  end;
end.
(Ist in Pascalscript geschrieben, Syntax für Delphi muss ggfls. angepasst werden.)

Rauskommen tut dieses:
Code:
i = 001 -> Spaltenname = A - (k = 001)
i = 002 -> Spaltenname = B - (k = 002)
i = 003 -> Spaltenname = C - (k = 003)
i = 004 -> Spaltenname = D - (k = 004)
i = 005 -> Spaltenname = E - (k = 005)
i = 006 -> Spaltenname = F - (k = 006)
i = 007 -> Spaltenname = G - (k = 007)
i = 008 -> Spaltenname = H - (k = 008)
i = 009 -> Spaltenname = I - (k = 009)
i = 010 -> Spaltenname = J - (k = 010)
i = 011 -> Spaltenname = K - (k = 011)
i = 012 -> Spaltenname = L - (k = 012)
i = 013 -> Spaltenname = M - (k = 013)
i = 014 -> Spaltenname = N - (k = 014)
i = 015 -> Spaltenname = O - (k = 015)
i = 016 -> Spaltenname = P - (k = 016)
i = 017 -> Spaltenname = Q - (k = 017)
i = 018 -> Spaltenname = R - (k = 018)
i = 019 -> Spaltenname = S - (k = 019)
i = 020 -> Spaltenname = T - (k = 020)
i = 021 -> Spaltenname = U - (k = 021)
i = 022 -> Spaltenname = V - (k = 022)
i = 023 -> Spaltenname = W - (k = 023)
i = 024 -> Spaltenname = X - (k = 024)
i = 025 -> Spaltenname = Y - (k = 025)
i = 026 -> Spaltenname = Z - (k = 026)
i = 027 -> Spaltenname = AA - (k = 001)
i = 028 -> Spaltenname = AB - (k = 001)
i = 029 -> Spaltenname = AC - (k = 001)
i = 030 -> Spaltenname = AD - (k = 001)
i = 031 -> Spaltenname = AE - (k = 001)
i = 032 -> Spaltenname = AF - (k = 001)
i = 033 -> Spaltenname = AG - (k = 001)
i = 034 -> Spaltenname = AH - (k = 001)
i = 035 -> Spaltenname = AI - (k = 001)
i = 036 -> Spaltenname = AJ - (k = 001)
i = 037 -> Spaltenname = AK - (k = 001)
i = 038 -> Spaltenname = AL - (k = 001)
i = 039 -> Spaltenname = AM - (k = 001)
i = 040 -> Spaltenname = AN - (k = 001)
i = 041 -> Spaltenname = AO - (k = 001)
i = 042 -> Spaltenname = AP - (k = 001)
i = 043 -> Spaltenname = AQ - (k = 001)
i = 044 -> Spaltenname = AR - (k = 001)
i = 045 -> Spaltenname = AS - (k = 001)
i = 046 -> Spaltenname = AT - (k = 001)
i = 047 -> Spaltenname = AU - (k = 001)
i = 048 -> Spaltenname = AV - (k = 001)
i = 049 -> Spaltenname = AW - (k = 001)
i = 050 -> Spaltenname = AX - (k = 001)
i = 051 -> Spaltenname = AY - (k = 001)
i = 052 -> Spaltenname = AZ - (k = 001)
i = 053 -> Spaltenname = BA - (k = 002)
i = 054 -> Spaltenname = BB - (k = 002)
i = 055 -> Spaltenname = BC - (k = 002)
i = 056 -> Spaltenname = BD - (k = 002)
i = 057 -> Spaltenname = BE - (k = 002)
i = 058 -> Spaltenname = BF - (k = 002)
i = 059 -> Spaltenname = BG - (k = 002)
i = 060 -> Spaltenname = BH - (k = 002)
i = 061 -> Spaltenname = BI - (k = 002)
i = 062 -> Spaltenname = BJ - (k = 002)
i = 063 -> Spaltenname = BK - (k = 002)
i = 064 -> Spaltenname = BL - (k = 002)
i = 065 -> Spaltenname = BM - (k = 002)
i = 066 -> Spaltenname = BN - (k = 002)
i = 067 -> Spaltenname = BO - (k = 002)
i = 068 -> Spaltenname = BP - (k = 002)
i = 069 -> Spaltenname = BQ - (k = 002)
i = 070 -> Spaltenname = BR - (k = 002)
i = 071 -> Spaltenname = BS - (k = 002)
i = 072 -> Spaltenname = BT - (k = 002)
i = 073 -> Spaltenname = BU - (k = 002)
i = 074 -> Spaltenname = BV - (k = 002)
i = 075 -> Spaltenname = BW - (k = 002)
i = 076 -> Spaltenname = BX - (k = 002)
i = 077 -> Spaltenname = BY - (k = 002)
i = 078 -> Spaltenname = BZ - (k = 002)
i = 079 -> Spaltenname = CA - (k = 003)
i = 080 -> Spaltenname = CB - (k = 003)
i = 081 -> Spaltenname = CC - (k = 003)
i = 082 -> Spaltenname = CD - (k = 003)
i = 083 -> Spaltenname = CE - (k = 003)
i = 084 -> Spaltenname = CF - (k = 003)
i = 085 -> Spaltenname = CG - (k = 003)
i = 086 -> Spaltenname = CH - (k = 003)
i = 087 -> Spaltenname = CI - (k = 003)
i = 088 -> Spaltenname = CJ - (k = 003)
i = 089 -> Spaltenname = CK - (k = 003)
i = 090 -> Spaltenname = CL - (k = 003)
i = 091 -> Spaltenname = CM - (k = 003)
i = 092 -> Spaltenname = CN - (k = 003)
i = 093 -> Spaltenname = CO - (k = 003)
i = 094 -> Spaltenname = CP - (k = 003)
i = 095 -> Spaltenname = CQ - (k = 003)
i = 096 -> Spaltenname = CR - (k = 003)
i = 097 -> Spaltenname = CS - (k = 003)
i = 098 -> Spaltenname = CT - (k = 003)
i = 099 -> Spaltenname = CU - (k = 003)
i = 100 -> Spaltenname = CV - (k = 003)
i = 101 -> Spaltenname = CW - (k = 003)
i = 102 -> Spaltenname = CX - (k = 003)
i = 103 -> Spaltenname = CY - (k = 003)
i = 104 -> Spaltenname = CZ - (k = 003)
i = 105 -> Spaltenname = DA - (k = 004)
i = 106 -> Spaltenname = DB - (k = 004)
i = 107 -> Spaltenname = DC - (k = 004)
i = 108 -> Spaltenname = DD - (k = 004)
i = 109 -> Spaltenname = DE - (k = 004)
i = 110 -> Spaltenname = DF - (k = 004)
i = 111 -> Spaltenname = DG - (k = 004)
i = 112 -> Spaltenname = DH - (k = 004)
i = 113 -> Spaltenname = DI - (k = 004)
i = 114 -> Spaltenname = DJ - (k = 004)
i = 115 -> Spaltenname = DK - (k = 004)
i = 116 -> Spaltenname = DL - (k = 004)
i = 117 -> Spaltenname = DM - (k = 004)
i = 118 -> Spaltenname = DN - (k = 004)
i = 119 -> Spaltenname = DO - (k = 004)
i = 120 -> Spaltenname = DP - (k = 004)
i = 121 -> Spaltenname = DQ - (k = 004)
i = 122 -> Spaltenname = DR - (k = 004)
i = 123 -> Spaltenname = DS - (k = 004)
i = 124 -> Spaltenname = DT - (k = 004)
i = 125 -> Spaltenname = DU - (k = 004)
i = 126 -> Spaltenname = DV - (k = 004)
i = 127 -> Spaltenname = DW - (k = 004)
i = 128 -> Spaltenname = DX - (k = 004)
i = 129 -> Spaltenname = DY - (k = 004)
i = 130 -> Spaltenname = DZ - (k = 004)
i = 131 -> Spaltenname = EA - (k = 005)
i = 132 -> Spaltenname = EB - (k = 005)
i = 133 -> Spaltenname = EC - (k = 005)
i = 134 -> Spaltenname = ED - (k = 005)
i = 135 -> Spaltenname = EE - (k = 005)
i = 136 -> Spaltenname = EF - (k = 005)
i = 137 -> Spaltenname = EG - (k = 005)
i = 138 -> Spaltenname = EH - (k = 005)
i = 139 -> Spaltenname = EI - (k = 005)
i = 140 -> Spaltenname = EJ - (k = 005)
i = 141 -> Spaltenname = EK - (k = 005)
i = 142 -> Spaltenname = EL - (k = 005)
i = 143 -> Spaltenname = EM - (k = 005)
i = 144 -> Spaltenname = EN - (k = 005)
i = 145 -> Spaltenname = EO - (k = 005)
i = 146 -> Spaltenname = EP - (k = 005)
i = 147 -> Spaltenname = EQ - (k = 005)
i = 148 -> Spaltenname = ER - (k = 005)
i = 149 -> Spaltenname = ES - (k = 005)
i = 150 -> Spaltenname = ET - (k = 005)
i = 151 -> Spaltenname = EU - (k = 005)
i = 152 -> Spaltenname = EV - (k = 005)
i = 153 -> Spaltenname = EW - (k = 005)
i = 154 -> Spaltenname = EX - (k = 005)
i = 155 -> Spaltenname = EY - (k = 005)
i = 156 -> Spaltenname = EZ - (k = 005)
i = 157 -> Spaltenname = FA - (k = 006)
i = 158 -> Spaltenname = FB - (k = 006)
i = 159 -> Spaltenname = FC - (k = 006)
i = 160 -> Spaltenname = FD - (k = 006)
i = 161 -> Spaltenname = FE - (k = 006)
i = 162 -> Spaltenname = FF - (k = 006)
i = 163 -> Spaltenname = FG - (k = 006)
i = 164 -> Spaltenname = FH - (k = 006)
i = 165 -> Spaltenname = FI - (k = 006)
i = 166 -> Spaltenname = FJ - (k = 006)
i = 167 -> Spaltenname = FK - (k = 006)
i = 168 -> Spaltenname = FL - (k = 006)
i = 169 -> Spaltenname = FM - (k = 006)
i = 170 -> Spaltenname = FN - (k = 006)
i = 171 -> Spaltenname = FO - (k = 006)
i = 172 -> Spaltenname = FP - (k = 006)
i = 173 -> Spaltenname = FQ - (k = 006)
i = 174 -> Spaltenname = FR - (k = 006)
i = 175 -> Spaltenname = FS - (k = 006)
i = 176 -> Spaltenname = FT - (k = 006)
i = 177 -> Spaltenname = FU - (k = 006)
i = 178 -> Spaltenname = FV - (k = 006)
i = 179 -> Spaltenname = FW - (k = 006)
i = 180 -> Spaltenname = FX - (k = 006)
i = 181 -> Spaltenname = FY - (k = 006)
i = 182 -> Spaltenname = FZ - (k = 006)
i = 183 -> Spaltenname = GA - (k = 007)
i = 184 -> Spaltenname = GB - (k = 007)
i = 185 -> Spaltenname = GC - (k = 007)
i = 186 -> Spaltenname = GD - (k = 007)
i = 187 -> Spaltenname = GE - (k = 007)
i = 188 -> Spaltenname = GF - (k = 007)
i = 189 -> Spaltenname = GG - (k = 007)
i = 190 -> Spaltenname = GH - (k = 007)
i = 191 -> Spaltenname = GI - (k = 007)
i = 192 -> Spaltenname = GJ - (k = 007)
i = 193 -> Spaltenname = GK - (k = 007)
i = 194 -> Spaltenname = GL - (k = 007)
i = 195 -> Spaltenname = GM - (k = 007)
i = 196 -> Spaltenname = GN - (k = 007)
i = 197 -> Spaltenname = GO - (k = 007)
i = 198 -> Spaltenname = GP - (k = 007)
i = 199 -> Spaltenname = GQ - (k = 007)
i = 200 -> Spaltenname = GR - (k = 007)
i = 201 -> Spaltenname = GS - (k = 007)
i = 202 -> Spaltenname = GT - (k = 007)
i = 203 -> Spaltenname = GU - (k = 007)
i = 204 -> Spaltenname = GV - (k = 007)
i = 205 -> Spaltenname = GW - (k = 007)
i = 206 -> Spaltenname = GX - (k = 007)
i = 207 -> Spaltenname = GY - (k = 007)
i = 208 -> Spaltenname = GZ - (k = 007)
i = 209 -> Spaltenname = HA - (k = 008)
i = 210 -> Spaltenname = HB - (k = 008)
i = 211 -> Spaltenname = HC - (k = 008)
i = 212 -> Spaltenname = HD - (k = 008)
i = 213 -> Spaltenname = HE - (k = 008)
i = 214 -> Spaltenname = HF - (k = 008)
i = 215 -> Spaltenname = HG - (k = 008)
i = 216 -> Spaltenname = HH - (k = 008)
i = 217 -> Spaltenname = HI - (k = 008)
i = 218 -> Spaltenname = HJ - (k = 008)
i = 219 -> Spaltenname = HK - (k = 008)
i = 220 -> Spaltenname = HL - (k = 008)
i = 221 -> Spaltenname = HM - (k = 008)
i = 222 -> Spaltenname = HN - (k = 008)
i = 223 -> Spaltenname = HO - (k = 008)
i = 224 -> Spaltenname = HP - (k = 008)
i = 225 -> Spaltenname = HQ - (k = 008)
i = 226 -> Spaltenname = HR - (k = 008)
i = 227 -> Spaltenname = HS - (k = 008)
i = 228 -> Spaltenname = HT - (k = 008)
i = 229 -> Spaltenname = HU - (k = 008)
i = 230 -> Spaltenname = HV - (k = 008)
i = 231 -> Spaltenname = HW - (k = 008)
i = 232 -> Spaltenname = HX - (k = 008)
i = 233 -> Spaltenname = HY - (k = 008)
i = 234 -> Spaltenname = HZ - (k = 008)
i = 235 -> Spaltenname = IA - (k = 009)
i = 236 -> Spaltenname = IB - (k = 009)
i = 237 -> Spaltenname = IC - (k = 009)
i = 238 -> Spaltenname = ID - (k = 009)
i = 239 -> Spaltenname = IE - (k = 009)
i = 240 -> Spaltenname = IF - (k = 009)
i = 241 -> Spaltenname = IG - (k = 009)
i = 242 -> Spaltenname = IH - (k = 009)
i = 243 -> Spaltenname = II - (k = 009)
i = 244 -> Spaltenname = IJ - (k = 009)
i = 245 -> Spaltenname = IK - (k = 009)
i = 246 -> Spaltenname = IL - (k = 009)
i = 247 -> Spaltenname = IM - (k = 009)
i = 248 -> Spaltenname = IN - (k = 009)
i = 249 -> Spaltenname = IO - (k = 009)
i = 250 -> Spaltenname = IP - (k = 009)
i = 251 -> Spaltenname = IQ - (k = 009)
i = 252 -> Spaltenname = IR - (k = 009)
i = 253 -> Spaltenname = IS - (k = 009)
i = 254 -> Spaltenname = IT - (k = 009)
i = 255 -> Spaltenname = IU - (k = 009)
i = 256 -> Spaltenname = IV - (k = 009)
Mit 'ner Funktion könnte es so aussehen:
Delphi-Quellcode:
program ExcelSpalten;

function MS_EXCEL_ConvertColumn(AColumn: Integer): String;
var
        k : Integer;
        m : Integer;
begin
  Result := '';
  k := AColumn;
  while k > 26 do begin
    m := k mod 26;
    if m = 0 then begin
      Result := Chr(m + 64 + 26) + Result;
      k := (k div 26) - 1;
    end else begin
      Result := Chr(m + 64) + Result;
      k := k div 26;
    end;
  end;
  Result := Chr(k + 64) + Result;
end;

var
        i : Integer;
begin
  For i := 1 to 25600 do begin
    WriteLn(MS_EXCEL_ConvertColumn(i));
  end;
end.

Geändert von nahpets ( 8. Sep 2015 um 10:10 Uhr) Grund: Noch ein bisserl erweitert, Funktion ist neu.
  Mit Zitat antworten Zitat