【问题标题】:How to loop through excel sheets, perform calculations, and compile results如何循环遍历 Excel 工作表、执行计算和编译结果
【发布时间】:2016-07-05 18:59:31
【问题描述】:

我有大约 70,000 张工作表,所有这些工作表都必须进行计算,然后将所有结果编译成一个新工作表(这将是 70,000 行长)。 它需要按日期排序。

我在 matlab 上非常非常非常差,但是我有我需要脚本为每个 excel 表做的事情,我只是不确定如何让它为所有人做。 谢谢!!! (我去掉了一些不重要的代码)

%Reading in excel sheet

     B = xlsread('24259893-008020361800.TorqueData.20160104.034602AM.csv');



%Creating new matrix

    [inYdim, inXdim] = size(B);

    Ydim = inYdim;

    [num,str,raw]=xlsread('24259893-008020361800.TorqueData.20160104.034602AM.csv',strcat('A1:C',num2str(Ydim)));



%Extracting column C

    C=raw(:,3);

    for k = 1:numel(C)

      if isnan(C{k})

        C{k} = '';

    end

end


%Calculations 

    TargetT=2000;

    AvgT=mean(t12);

    TAcc=((AvgT-TargetT)/TargetT)*100 ;

    StdDev=std(B(ind1:ind2,2));

    ResTime=t4-t3;

    FallTime=t6-t5;

    DragT=mean(t78);

    BreakInT=mean(t910);

    BreakInTime=(t10-t9)/1000;

    BreakInE=BreakInT*BreakInTime*200*.1047;






%Combining results 

    Results=[AvgT TAcc StdDev ResTime FallTime DragT BreakInT BreakInTime BreakInE]

我认为我需要按照以下方式做一些事情:

filenames=dir('*.csv')

我发现这可能有用:

filenames=dir('*.csv');

    for file=filenames'

    csv=load(file.name);





with stuff in here


 end

【问题讨论】:

  • 那是我得到最后一点的地方,但它给了我一个错误,即并非所有工作表的尺寸都相同。我不需要用 i 和 j 做事吗?我也不知道该怎么做。
  • 我在你的问题中没有看到...
  • 参见“我发现这可能有用”
  • 如果您尝试过某事但没有成功,您不认为在您的问题中包含这些有用的信息吗?您问“我该怎么做”,答案是“遍历目录中的文件”。如果您不告诉我们,我们无法预测您遇到的其他问题。请参阅How to Ask 以及有关如何提供minimal reproducible example 的指南。

标签: excel matlab loops directory


【解决方案1】:

您的想法是正确的,但您需要为文件名编制索引,以便能够在 for 循环中单步执行它们。

FileDir = 'Your Directory';
FileNames = {'Test1';'Test2';'Test3'};
for k=1:length(FileNames)
     file=[FileDir,'/',FileNames{k}]); 
     [outputdata]=xlsread(file,sheet#, data locations);
     THE REST OF YOUR LOOP, Indexed by k
end

如何选择获取文件名和目录取决于您。

【讨论】:

  • 非常感谢!我试试这个
  • 嗨,所以我让我的代码通过我的所有文件(嗯,我现在在 10 上测试它)。我不确定您所说的文件名是什么意思。我不可能列出所有 70,000 :(
  • 我只是输入了这 3 个文件名作为示例。您可以使用dir 命令获取所有文件名。确保将其写为STRUCT=dir; 以确保存储答案(STRUCT 可以是您想要的任何名称)。它们将存储在结构中,文件名在 STRUCT.name 列中。然后,您可以通过FileNames={STRUCT.name}; 将其转换为元胞数组,这将为您目录中的所有文件生成变量FileNames。拥有不同长度的文件名应该不是问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 2020-04-05
  • 2014-11-15
  • 2021-12-07
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
相关资源
最近更新 更多