用matlab对excel中数据选择性染色
在网上找了n久,都没有找到实现这个功能的代码,于是结合各位大佬提供的功能码块,自己拼接出了具有:能够选择指定excel表中满足某个算术条件的单元格,并且对其染色的脚本
欢迎纠错,另外有小伙伴拓展了其他功能的话,欢迎留言在评论区~
- 数字转字母的函数letter2char:
function str=letter2char(num)
s=num+64;
str=char(s);%因为char(65)=A
- 需要分块的函数lettertoxls:
function s=lettertoxls(Integer0);%matlab中的函数定义
if (Integer0<=26) %若只有单个字母
s=letter2char(Integer0); %转化成字母
elseif(Integer0<=702 && Integer0>26)%不止单个字母,比如AA,BF等。702刚好到两位的最后一个列号:ZZ
Integer1 = fix(Integer0/26);
while(Integer0>26)
Integer0=Integer0-26;
end
a=letter2char(Integer1);
b=letter2char(Integer0);
s=strcat(a,b);
end
end
- 选择并染色:
clear;
[a,b,c]=xlsread("C:\Users\HUAWEI\Desktop\4.xlsx");%这里打开是为了在表格中筛选符合条件的数据
for i=1:50 %数据寻找范围
for j=1:29 %数据寻找范围(注意不能超过一开始读入的范围)
if(a(i,j)>=100)
str2=int2str(i);%int to str行数当作字符
lie=**lettertoxls**(j);%列转换成ABC这样子
poistion=strcat(lie,str2);%字符串连接函数,[列,行]。如A1单元格
** %这里只能用strcat拼接,若果用[]拼接,形成的是str类型,不适用于下文Range中参数类型,而strcat拼接出来的是cell。**
rgb = [255 0 0];
e = actxserver('Excel.Application');%这里是建立服务端('Excel.Application'是指excel的服务端,和上面打开表格不重复不矛盾)
ewb = e.Workbooks.Open("C:\Users\HUAWEI\Desktop\4.xlsx");
ewb.Worksheets.Item(1).Range(poistion).Interior.Color = rgb*256.^(0:2)';%红色
%poistion不加引号
ewb.Save;
ewb.Close(false);
e.Quit;
e.delete;
end
end
end
-
实现效果
这篇文章,是又一个故事的结束...
lazy's story is continuing.