算法:如何确定第N列在Excel中对应的横坐标,反之如何确定Excel横坐标对应第多少列

Excel中横坐标是用英文字母表示 如第1列是A;第27列是AA;第28列AB;第702列是ZZ;第703列是AAA ;704列AAB;以此类推

那么第999999列所对应的横坐标是什么;

横坐标为ABBBBBZ是第多少列。求js算法


    var ConvertNum = function (str) {
        str = str.toUpperCase();
        var n = 0;
        var s = str.match(/./g);//求出字符数组
        var j = 0;
        for (var i = str.length - 1, j = 1; i >= 0; i--, j *= 26) {
            var c = s[i].toUpperCase();
            if (c < 'A' || c > 'Z') {
                return 0;
            }
            n += (c.charCodeAt(0) - 64) * j;
        }
        return n;
    }
    var Convert26 = function (num) {
        var str = "";
        while (num > 0) {
            var m = num % 26;
            if (m == 0) {
                m = 26;
            }
            str = String.fromCharCode(m + 64) + str;
            num = (num - m) / 26;
        }
        return str;
    }

    alert(Convert26(28));
    alert(Convert26(702));
    alert(Convert26(704));
    alert(Convert26(999999));

    alert(ConvertNum('ABBBBBZ'))
    alert(Convert26(333629062))

 

这个简单呐,A表示1,Z表示26,然后AAA就是1*26^2+1*26^1+1*26^0=676+26+1=703嘛,ZZ就是26*26^1+26*26^0=676+26=702