首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编程谜语:如何将Excel列名转换为数字?

编程谜语:如何将Excel列名转换为数字?
EN

Stack Overflow用户
提问于 2009-04-18 16:13:32
回答 24查看 24.6K关注 0票数 45

最近,我在一次求职面试中被要求解决一个编程难题,我认为分享这个难题会很有趣。这是关于将Excel列字母转换为实际数字,如果你还记得,Excel用字母从A到Z命名它的列,然后顺序是AA,AB,AC……AZ、BA、BB等

您必须编写一个接受字符串作为参数的函数(如"AABCCE"),并返回实际的列数。

解决方案可以是任何语言。

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2009-04-18 17:07:25

我很久以前就为一些Python脚本写了这篇文章:

def index_to_int(index):
    s = 0
    pow = 1
    for letter in index[::-1]:
        d = int(letter,36) - 9
        s += pow * d
        pow *= 26
    # excel starts column numeration from 1
    return s
票数 16
EN

Stack Overflow用户

发布于 2009-06-17 01:04:13

对我来说,这听起来像是标准的缩减:

Python:

def excel2num(x): 
    return reduce(lambda s,a:s*26+ord(a)-ord('A')+1, x, 0)

C#:

int ExcelToNumber(string x) {
    return x.Aggregate(0, (s, c) => s * 26 + c - 'A' + 1 );
}
票数 36
EN

Stack Overflow用户

发布于 2013-11-24 07:49:49

巧合的是,我用javascript解决了同样的问题

$(function() { //shorthand document.ready function
    var getNumber = function(x) {
        var result = 0;
        var multiplier = 1;
        for ( var i = x.length-1; i >= 0; i--)
        { 
            var value = ((x[i].charCodeAt(0) - "A".charCodeAt(0)) + 1);
            result = result + value * multiplier;
            multiplier = multiplier * 26;
        }
        return result;
    };
    
    $('#form').on('submit', function(e) { //use on if jQuery 1.7+
        e.preventDefault();  //prevent form from submitting
        var data = $("#number").val();
        $('#answer').text(getNumber(data));
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="form">
<input type="text" id="number"></input>
    <button>submit</button>
</form>
<p id="answer"></p>

    var getNumber = function(x) {
        var result = 0;
        var multiplier = 1;
        for ( var i = x.length-1; i >= 0; i--)
        { 
            var value = ((x[i].charCodeAt(0) - "A".charCodeAt(0)) + 1);
            result = result + value * multiplier;
            multiplier = multiplier * 26;
        }
        return result;
    };

http://jsfiddle.net/M7Xty/1/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/763691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档