【问题标题】:Extract same column from multiple excel files using xlsread使用 xlsread 从多个 excel 文件中提取同一列
【发布时间】:2014-12-28 16:14:47
【问题描述】:

我在 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 单元格,最重要的是它会移动到下一列。

非常感谢您提前提供的帮助!

【问题讨论】:

    标签: excel matlab extract xlsread


    【解决方案1】:

    家里没有 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
    

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2012-06-09
      相关资源
      最近更新 更多