Umwandlung Excel Spalte A... in numerischen Wert ...

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Umwandlung Excel Spalte A... in numerischen Wert ...

Beitrag von brandelh »

Hi,

ich überlege gerade wie man das am Besten macht. Nach den normalen Stellensystemen (Dezimal, Hexadezimal etc.) wäre die Formel etwa so:

(ASC(SUBSTR(sCol,x,1))-ASC("A")+1) * 27 ^ (x-1)

da es aber keine 0 gibt, ist der Überlauf von 26 (A) nach 27 (AA) nach obiger Formel auf 28 ...
Ich könnte ein Array mit Wertetabelle erstellen und dann mit aScan() die Position ermitteln, aber vielleicht erkennt ja jemand wie man die Formel umstellen muss ...

Oder hat jemand schon solche Umrechungsfunktionen ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Beitrag von brandelh »

na ja, es geht ja ratz fatz mit dieser Funktion ... 702 Spalten, das sollte genügen ;-)

Code: Alles auswählen

static aTable := NIL
   if aTable = NIL
      aTable := {}
      for y := 0 to 26
          for x := 1 to 26
              if y=0
                 aadd( aTable,chr(x+64) )
              else
                 aadd( aTable,chr(y+64)+chr(x+64) )
              endif
          next
      next
   endif
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Beitrag von AUGE_OHR »

brandelh hat geschrieben:ich überlege gerade wie man das am Besten macht. Nach den normalen Stellensystemen (Dezimal, Hexadezimal etc.) wäre die Formel etwa so:

(ASC(SUBSTR(sCol,x,1))-ASC("A")+1) * 27 ^ (x-1)

Oder hat jemand schon solche Umrechungsfunktionen ?
ich verwende das

Code: Alles auswählen


   cEnde := ZAHL2CHR(nLFcount)
   oSheet:range( "A1:"+cEnde+LTRIM( STR(nLen ) ) ):value  := aExcel


FUNCTION ZAHL2CHR(nLFcount)
LOCAL nMal
LOCAL cEnde

   IF nLFcount > 26
      nMal  := INT(nLFcount/26)
      IF nMal = nLFcount/26              // geändert
         cEnde := CHR(nMal+64-1) + "Z"  // geändert
      ELSE
         cEnde := CHR(nMal+64)+CHR((nLFcount-(nMal*26))+64)
      ENDIF
   ELSE
      cEnde := CHR(nLFcount+64)
   ENDIF

RETURN cEnde
geändert : bis 702 -> ZZ
Zuletzt geändert von AUGE_OHR am Mo, 16. Dez 2013 1:37, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Beitrag von brandelh »

in der LibXL gibt es doch tatsächlich auch eingebaute Umrechnungsfunktionen, also brauche ich auf Xbase++ gar keine :-)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Beitrag von Koverhage »

Was ist LibXL ?
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Beitrag von brandelh »

Eine DLL mit der man OHNE ActiveX bzw. installiertem Excel XLS oder XLSX Exceldokumente sehr schnell erzeugen kann.
Ich baue gerade Wrapper Code dafür.

http://www.libxl.com
Gruß
Hubert
Antworten