首先,您需要使用MATLAB中的函数来读取和处理Excel文件。您可以使用`xlsread`函数来读取Excel文件中的数据。然后,您可以使用循环遍历每个文件,并将相同年份的数据求和。
以下是一个基本的代码示例,展示了如何实现您的需求:
% 定义文件夹路径和输出文件夹路径
folderPath = '文件夹路径';
outputFolderPath = '输出文件夹路径';
% 获取文件夹中的所有Excel文件名
fileList = dir(fullfile(folderPath, '*.xlsx')); % 假设为.xlsx文件,如为.xls文件,请修改为*.xls
% 初始化一个结构体用于存储每个年份的总和
yearlySum = struct();
% 遍历每个Excel文件
for i = 1:length(fileList)
% 读取第五列和前三列的数据
[~, ~, rawData] = xlsread(fullfile(folderPath, fileList(i).name));
years = cell2mat(rawData(2:end, 5)); % 第五列为年份
data = cell2mat(rawData(2:end, 2:4)); % 前三列为时间,次数,量级
% 按年份求和
uniqueYears = unique(years);
for j = 1:length(uniqueYears)
yearIndex = years == uniqueYears(j);
yearlySum.(sprintf('sum_%d', uniqueYears(j))) = sum(data(yearIndex, :));
end
end
% 创建输出文件夹(如果不存在)
if ~exist(outputFolderPath, 'dir')
mkdir(outputFolderPath);
end
% 将每个年份的总和写入单独的Excel文件
outputFileName = fullfile(outputFolderPath, 'sum_output.xlsx');
for k = 1:length(uniqueYears)
year = uniqueYears(k);
worksheetName = sprintf('sum_%d', year);
xlswrite(outputFileName, yearlySum.(worksheetName), worksheetName);
end
请注意,此代码假设文件夹中只包含Excel文件,并且文件名以".xlsx"结尾。如果文件名不同或者文件格式不同,请相应地修改代码。
此外,您需要将`文件夹路径`和`输出文件夹路径`替换为您实际的文件夹路径。
希望这能帮助到您!祝您编程愉快!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |