我在C盘上有一个目录,其中包含许多格式相同的excel文件。我想使用我在网上找到的以下脚本将每个文件中的H列复制到一个新文件中:
dirs=dir('C:\xxx\*.xlsx');
dircell=struct2cell(dirs);
filenames=dircell(1,:);
range = 'H:H';
n = (numel(filenames));
for i = 1:n;
Newfile(:,i) = xlsread(filenames{i},range);
end
这会给出错误消息"订阅分配维度不匹配。"在结果文件(Newfile)中只提取了一列。
我玩了范围,发现当xlsread到达第一个文件列表的末尾时会发生错误,当值为空时会停止。我的专栏H有不同数量的填充值(即文件1有20,文件2有100,文件3有3等)。
所以,我的问题是是否可以修改这个脚本,以便在遇到空单元格时,提取空单元格或NaN单元格,最重要的是它将移动到下一列。
非常感谢您的帮助!
答案 0 :(得分:0)
在家里没有Matlab,我必须从头顶开始 由于您读取的列H具有不同数量的有效条目,因此您不应该尝试将它们强制插入到结果数组NewFile中,而是使用临时变量
dirs=dir('C:\xxx\*.xlsx');
dircell=struct2cell(dirs);
filenames=dircell(1,:);
range = 'H:H';
n = numel(filenames);
Newfile = NaN*ones(1, n);
for nf = 1:n;
tempVar = xlsread(filenames{nf},range);
r = size(NewFile,1); % get number of rows in NewFile
if length(tempVar) > r
% Make Newfile big enough to fit column nf
Newfile = [Newfile;NaN*ones(length(tempVar)-r,n)];
end
Newfile(:,nf) = tempVar;
end