FUNCTION GetColumnRef RETURNS CHARACTER
( input iX as integer) :
/*------------------------------------------------------------------------------
Purpose: Returns the Excel column reference for (iX). Used for RANGE.
Notes: eg. GetColumnRef(28) returns AB
------------------------------------------------------------------------------*/
DEF VAR cColumnRef AS CHARACTER NO-UNDO.
DEF var m as integer no-undo.
def var d as integer no-undo.
IF iX < 1 THEN RETURN ?.
assign
m = (iX - 1) mod 26 /* Modulus */
d = trunc( ((iX - 1) / 26) , 0). /* Divisor */
if d = 0 then
cColumnRef = chr( asc("A") + m).
else
cColumnRef = chr( asc("A") + d - 1) + chr( asc("A") + m).
RETURN cColumnRef.
END FUNCTION.
FUNCTION GetColumnRef RETURNS CHARACTER
( input iX as integer) :
/*------------------------------------------------------------------------------
Purpose: Returns the Excel column reference for (iX). Used for RANGE.
Notes: eg. GetColumnRef(28) returns AB
Only caters for 2 letter columns! This max changed in (?) Excel 2007
------------------------------------------------------------------------------*/
DEF var m as integer no-undo.
def var d as integer no-undo.
IF iX < 1 OR ix > 256 THEN RETURN ?. /* old, wimpy limit = 256 ! new column limit is 16384! */
IF iX < 27 THEN RETURN chr( asc("A") + m). /* single letter columns */
/* Use base 26 to work out the alpha 'digits' in the column label */
assign
m = (iX - 1) mod 26 /* Modulus */
d = trunc( ((iX - 1) / 26) , 0). /* Divisor */
RETURN chr( asc("A") + d - 1) + chr( asc("A") + m).
END FUNCTION.