`
leeqq
  • 浏览: 138603 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Excel列数与对应字母的转化

    博客分类:
  • JAVA
阅读更多

       最近遇到这样个问题,将数据写进Excel文档中,在插入公式的时候希望得到某列对应的字母,如给第一列对应'A',第52列对应'AZ'

现将代码贴出,后面待用

 

public String getExcelColumnLetter(int column){
    String columnLetter = "";
    while(column > 26){
        int remainder = column % 26;
        if(0 == remainder){
            columnLetter = (char)(64+26) + columnLetter;
            column=(column-26)/26;
        }else{
            columnLetter = (char)(64+remainder) + columnLetter;
            column=(column-remainder)/26;
        }
    }
    columnLetter = (char)(64+column) + columnLetter;
    return columnLetter;
}

 这段代码列数是是从1开始的。

 

另外在网上看见一段相同功能的代码,相比更加简洁一点

 

public static String getExcelLabel(int index) {
    String rs = "";
    do {
        index--;
        rs = ((char) (index % 26 + (int) 'A')) + rs;
        index = (int) ((index - index % 26) / 26);
    } while (index > 0);
    System.out.println(rs);
    return rs;
}

 上面这两段代码未对传入的参数做判断,如果传入负数就悲催了,等着返回各种字符吧。需要的时候可以在函数开始处添加判断语句。

 

 

       完成这段代码之后又没事写了个从字母到列数的函数,也贴出来吧

 

public int getExcelColumnIndex(String columnLetter){
    if(columnLetter == null || !columnLetter.matches("[a-zA-Z]+")){
        return -1;
    }
    columnLetter = columnLetter.toUpperCase();
    int columnIndex = 0;
    char[] letters = columnLetter.toCharArray();
    for(char let : letters){
        columnIndex = (int)let - 64 + columnIndex*26;
    }
    return columnIndex;
}

 这段代码对传入的字符串没有大小写的限制,但是必须全是字母组成,否则返回-1。表示字符串不合法。

 

最后提供一个验证方法

在Excel中某个单元格输入列数对应的字母如A1单元格输入AB,然后在B1单元格输入公式=COLUMN(INDIRECT(A1&3))

这样就可以在B1单元格得到AB列对应的列数28,在excel2007中最大好像只能输入XFD。

 

倒过来,可以在A2单元格输入列数如28,在B2单元格输入=LEFT(ADDRESS(1,A2,4,1),LEN(ADDRESS(1,A2,4,1))-1)

 就可以在B2单元格得到28列对应的列标字母AB了。XFD对应的列数是16384,所以输入的数不要大于16384。

分享到:
评论

相关推荐

    excel字母和数字的转换

    excel字母和数字的转换,把对应的数字列转换为字母。如:A对应0 AA 26 AAA 702 ……

    matlab开发-Excel列名称到编号

    描述中提到的"将Excel列名的单元格数组转换为Excel列号数组",意味着我们要处理的数据结构是一个包含Excel列名的单元格数组,并将其转化为对应的整数数组。MATLAB提供了丰富的工具来操作Excel文件,例如`xlsread`和`...

    Excel行列号转化

    - **列号转数字**:对于单字母列号,A对应1,B对应2,Z对应26。对于双字母列号,如AA,先将每个字母转换为对应的数字(A=1,B=2),然后将它们相加(AA=1+26=27)。 3. **编程中的行列号转化** - 在VBA(Visual ...

    26进制检测-EXCEL列号操作

    `CHAR()`函数可以将1到255的数字转换为对应的字符,非常适合将10进制列号转化为字母;而`CODE()`函数则相反,它可以获取一个字符的ASCII码,帮助我们将字母转换成对应的数字。 3. **列号与行号**:在Excel中,行号...

    易语言读取excel文件到高级表格

    这通常涉及到设置表格的行数、列数,以及每个单元格的值,还要注意保持数据的原始格式。 6. **处理特殊格式和公式**:如果Excel单元格包含公式或特殊的样式(如颜色、字体、边框等),则需要额外的处理来保持这些...

    js代码-excel是常用的办公软件,它是由二维单元格组成。行是由1开始的阿拉伯数字,列是由A开始的英文字母,A代表第1列,Z代表第26列。 下面请实现一个函数,输入是一个字符串,代表单元格的坐标描述,如1AA,请输出返回它所代表行与列的阿拉伯数字对象。 输入:'1AA' 输出:{row:1, column:27}

    对于列的标识,从A开始,每增加一个字母,代表的列数就增加一,直到Z,然后进入下一组字母,如ZA代表27列。本题要求我们编写一个JavaScript函数,根据给定的单元格坐标字符串,解析出对应的行号和列号。 首先,我们...

    将excel文件转换成foxpro数据库文件.doc

    1. **字段名与记录对应**:Excel的第一行数据在转换后成为FoxPro数据库文件的字段名,第二行至最后一行则转化为记录,且记录顺序与Excel的行顺序保持一致。例如,一个包含n行的Excel文件会转换为拥有n-1条记录的...

    EXCEL 全面的函数介绍文档

    1. VLOOKUP/HLOOKUP:在表格的垂直或水平方向上查找指定值,并返回对应列的值。 2. INDEX/MATCH:更灵活的查找方式,可以在不按顺序的区域中查找数据。 3. OFFSET:返回基于指定起始单元格的偏移位置的值,常用于...

    易语言导入EXCEL到EDB数据库

    此子程序可能包含将字母字符转化为对应数字的算法。 4. **数据库操作**: EDB数据库是由E语言开发环境提供的私有数据库格式,类似于SQLite。在易语言中,需要使用特定的数据库接口来连接、查询和操作EDB数据库。...

    Excel新增工具集

    合并结果为:总表记录行数为各工作表的记录行数之和,表头列数为各工作表列数之和,并在A列多出一个标志列,标记本条记录来源于哪个工作表。 5、多表(单表)同类数据合并与求和:其效果是:(a)标识列重名的合成一...

    excel中161个VBA_自定义函数(超级实用)

    返回指定列数的列标 此函数根据输入的列号返回相应的列字母标识,例如输入“3”返回“C”,这在编写依赖于列标识的公式或函数时十分方便。 #### 13. 用指定字符替换某字符 该函数允许用户将字符串中的特定字符...

    toColumnIndex:将列索引转换为字母名称的实用程序功能

    在JavaScript编程中,"toColumnIndex"通常是指一个实用的辅助函数,它的主要作用是将数字形式的列索引转换成对应的字母表示,这在处理类似电子表格的数据时非常常见。例如,在Excel中,第1列是"A",第26列是"Z",第...

    【税会实务】活用Excel的基本功能.doc

    - **计算功能选择**:可以通过右击状态栏选择所需的统计功能,或者在弹出选项卡后直接键入对应字母,如“m”代表最大值,“a”代表均值。 3. **批量转换单位**: 在处理金额单位转换时,如将元转换为万元,可以...

    excel中161个VBA_自定义函数超级实用

    函数作用:返回指定列数的列标.......................42 '13.函数作用:用指定字符替换某字符.....................43 '14.函数作用:从右边开始查找指定字符在字符串中的位置...43 '15.函数作用:从右边开始查找指定...

    Excel中录入数据--填空题数据.pdf

    - 接着,将编码填入Excel表格中对应受访者的答案位置。 - 最后,进行数据录入时,每个受访者针对每个问题的响应都应被转化为预先定义的编码。 4. **注意事项** - 编码时需保持一致性,确保相同答案的编码始终...

    将行和列号转换为 xlswrite 兼容格式:转换行和列号以使用 xlswrite 范围输入参数。-matlab开发

    在这个例子中,我们看到行号500保持不变,因为它在Excel的行索引范围内,但列号22(MATLAB中从1开始)转换为字符'V',因为22在Excel列字母表中对应于第22个字母。 `conv2xlscell`函数的工作原理是首先处理列索引,...

    Excel中如何对姓名进行按照笔画排序.docx

    这个公式适用于较小的数据范围,它的工作原理是计算每个姓名末尾字符的Unicode编码,然后转化为笔画数,并用SMALL函数找出最小的笔画值,最后通过INDEX函数找到对应姓名的位置。但请注意,此公式可能需要根据实际...

    Excel表格的35招必学秘技(图文最终版)

    然后在企业名称列使用INDIRECT函数,根据企业类别动态获取对应的企业名称列表。 2. **建立“常用文档”新菜单**:通过自定义菜单栏,可以创建一个“常用文档”菜单,将经常使用的Excel工作簿添加为快捷方式,方便...

    利用Text函数在Excel 2021中建立顺序编号.docx

    3. 将鼠标移到A2单元格的右下角,当鼠标变成一个黑色的"+"形状时,双击这个填充柄,Excel会自动填充整个列,直到遇到有数据的单元格为止。这样,每一行都将根据其行号生成对应的编号,且由于是基于公式生成,即使...

Global site tag (gtag.js) - Google Analytics