sub mlx_xls2col { my $col = shift; my $alphabet = shift || [ 'A' .. 'Z' ]; my $alphabet_size = scalar( @$alphabet ); my $result = ''; my $remainder = $col; while ( $remainder ) { my $letter = $remainder % $alphabet_size; my $adj = length( $result ) ? -1 : 0; # Not quite a base-26 number $result = $alphabet->[$letter + $adj] . $result; $remainder = int( $remainder / $alphabet_size ); } $result ||= $alphabet->[0]; $result; } print mlx_xls2col( 0 ), "\n"; print mlx_xls2col( 1 ), "\n"; print mlx_xls2col( 2 ), "\n"; print mlx_xls2col( 24 ), "\n"; print mlx_xls2col( 25 ), "\n"; print mlx_xls2col( 26 ), "\n"; print mlx_xls2col( 27 ), "\n"; print mlx_xls2col( 51 ), "\n"; print mlx_xls2col( 52 ), "\n"; print mlx_xls2col( 53 ), "\n"; __DATA__ A B C Y Z AA AB AZ BA BB