Matlab GUI工具——多个Excel文件合并成一个文件,且去重处理


点击此处直接获取应用

点击此处观看操作视频

遇到问题

工作日常中,经常需要去处理一些琐碎的任务,比如公司让你统计每个人的基本信息,你把excel模板发邮件给了各位同事,同事填好后都发送了给你,那么你将会面临灾难性统计工作:
你们族谱按彩虹写的?
此时的你将会怎么处理呢?你会把文件挨个打开,然后复制其基本信息,再逐个汇总到一起?如此重复的操作不仅使人感到枯燥,最重要的是耽误摸鱼的时间了。

那么有什么好的方法能快速处理这个问题呢?

解决方案

首先分析下每个excel中的结构,一般可分为表头和内容两个部分,我们在合并时只需要保留表头,再逐个追加各自的内容即可。
在这里插入图片描述
也就是说我们需要处理的就是“保留公共部分(表头),合并差异部分(内容)”,再凝练一下就是按行取并集

我使用工科神器Matlab进行处理,在Matlab中有着这样一个函数能够直接处理并集:

A = [2 2 2; 0 0 1];
B = [1 2 3; 2 2 2; 2 2 2];
C = union(A,B.'rows');

返回结果为:

C =

     0     0     1
     1     2     3
     2     2     2

但是此函数只能处理矩阵,对于像excel这种存在着文本、数字复合类型的文件来说,不能够直接用此方法处理,所以可以考虑构造一个映射表,将所有excel文件中单元格出现的内容映射到一个数字矩阵中,再对数字矩阵做并集处理,将得到的数字矩阵根据映射表反解回excel表格中,即可得到合并好的excel表格啦。

拿小红和小橙举例:

在这里插入图片描述

在这里插入图片描述
根据函数CreatNumMat与CheakRepetition构造一个映射表:

function NumMat = CreatNumMat(FileA)

global DataBase;
global IndexSum;

%数字映射 进行数字编码
NumMat = [];
[rowFileSum,colFileSum] = size(FileA);

for RowFile = 1:rowFileSum
    for ColFile = 1:colFileSum
        
        %如若存在数值型 转换为字符串类型
        if isfloat(FileA{RowFile,ColFile})
            FileA{RowFile,ColFile} = num2str(FileA{RowFile,ColFile});
        end
        
        %遍历数据库 进行无重储存
        if IndexSum == 1
            DataBase{IndexSum} = FileA{RowFile,ColFile};
            IndexSum = IndexSum+1;
        else
            if ~CheakRepetition(DataBase,IndexSum,FileA{RowFile,ColFile})
                DataBase{IndexSum} = FileA{RowFile,ColFile};
                IndexSum = IndexSum+1;
            end
        end
        
        %构建映射表 与文件元胞数组一一对应
        for Index = 1:IndexSum-1
            if strcmp(DataBase{Index},FileA{RowFile,ColFile})
                NumMat(RowFile,ColFile) = Index;
            end
        end
            
    end
end

end
function Res = CheakRepetition(DataBase,LengthDataBase,FileCell)

Res = 0;

for IndexDataBase = 1:LengthDataBase-1
    if strcmp(DataBase{IndexDataBase},FileCell)
        Res = 1;
        return
    end
end

end

映射表如下:
在这里插入图片描述
根据此映射表将小红与小橙的信息解算为数字矩阵:
小红:
在这里插入图片描述
小橙:
在这里插入图片描述

将小红与小橙进行并集计算:
在这里插入图片描述
再将此数字矩阵进行反解为excel表格:
在这里插入图片描述

创建应用

为了让大家能够痛快摸鱼,本着辛苦我一人,幸福千万家的原则,给大家制作了一个方便使用的GUI应用:
在这里插入图片描述

点击数据导入按键即可选择excel文件,可进行多个文件选择,在是否选中可以将需要执行汇总的表格文件进行勾选,点击执行汇总可弹出一个excel文件,且文件中已经汇总好信息。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值