最近处理数据将数据批量写入excel中,需要一个子函数,将excel中列名(字母)与数字对应,写了一个子函数,但是有点问题,找了网上的一些资料,发现这竟然曾经是一道程序员笔试题目。
网上的一些例子,链接如下:
- 【算法】Excel中的列名与数字的对应
- 字母和数字的转换——Excel列名
- http://blog.csdn.net/ustczyy/article/details/24262557
- excel根据列序号计算出对应的列字母
- Excel的列编号 例如:A对应1,Z对应26,AA对应27,AZ对应52 ……
- 求excel某一列对应的字母表示
- 将Excel中的列号由数字转化为相应的字母的matlab代码
因为我的数据最多也就是1000个,不超过excel的1000列,也就是最多用到三个字母。
别人写的都简短。我写的很拙略,看起来很笨,运行了一下有点问题,贴出来吧。
程序如下(注意,不太对,有问题):
function str_lie=Z1_col_alphabet_relate_num(datanum_col)
%% 找出excel列对应的字母
str_alphabet={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',...
'P','Q','R','S','T','U','V','W','X','Y','Z'};
if datanum_col<=26 %一个字母
str_lie=str_alphabet{1,datanum_col};
end
if datanum_col>26&&datanum_col<=26+26*26 % 2个字母
lie_1=fix(datanum_col/26); %整数
lie_2=mod(datanum_col,26); %余数
str_lie=strcat(str_alphabet{1,lie_1},str_alphabet{1,lie_2});
end
if datanum_col>26+26*26&&datanum_col<=26*26+26*26*26 % 3个字母
lie_1=fix(datanum_col/26/26); %整数
lie_2=fix((datanum_col-26*26)/26);
lie_3=mod(datanum_col,26); %余数
str_lie=strcat(str_alphabet{1,lie_1},str_alphabet{1,lie_2},str_alphabet{1,lie_3});
end