中企动力 > 商学院 > 从多个excel文件中提取数据
  • ?

    R学习笔记系列—R语言从文本和Excel文件中读取数据

    房煜城

    展开

    1.4.1 从文本文件中导入数据

    可以使用 read.table() 函数从带分隔符的文本文件中导入数。调用格式为:

    这个函数看上去很复杂,但其实很多参数在使用时不用明确指出来,使用默认值可以满足绝大部分情况,因此实际使用还是比较简单的,下面我们简单介绍一下参数含义。

    file: 字符型,文件名称,要从中读取文件的完整路径。

    header: 逻辑型,指定是否在首行包含变量名,默认为 FALSE。

    sep: 字符型,分割字符,默认为"",代表空白字符,包括空格(一个或多个)、制表符、 换行符、回车

    dec: 字符型,指定小数点字符,默认为".",一般不用修改。

    numerals: 字符型,在数字转换会损失精度时的处理方法,allow.loss 表示允许精度损失;warn.loss 允许精度损失,但显示一条警告信息;no.loss 不允许精度损失,即转换为数字,而是转换为因子或者不转换,保留字符串形式。

    row.names 字符向量,为行指定名称。

    col.names 字符向量,为列指定名称,若列名在第一行定义好了,可不用。

    stringAsFactors: 逻辑型,是否将字符串自动编码为因子,默认为 TRUE。

    na.strings: 字符向量,定义代表缺失值的字符串,比如c("N",".")会将 "N" 和"." 两个字符读取为缺失值,默认为 "NA"。

    colClasses: 字符向量为列指定类型,比如c("numeric","character")指定第一列为数值型,第二列为字符型,若将某列指定为字符串,则不会将其自动编码为因子。

    nrows: 数值型,读取的最大行数,负数为不限制。

    skip: 数值型,读取前跳过的行数。

    check.names: 逻辑型,是否检查变量名在 R 中的有效性,默认为 TRUE。

    fill: 逻辑型,是否自动填充空白值,若各变量行数不一致,是否为空白列添加空白值。

    strip.white: 逻辑型,是否自动过滤掉字符型变量前后的空格。

    comment.char: 字符型,注释字符,以此字符开头的行将被忽略。

    blank.lines.skip 逻辑型,是否忽略空白行,默认为 TRUE。

    allowEscapes: 逻辑型,是否处理 C 语言风格的转意符。

    text: 字符型,直接指定要读取的字符串,此时 file 应该为空。

    encoding: 字符型,输入文本的编码,若出现乱码,请尝试更改此选项。

    fileEncoding: 字符型,文件编码,若出现乱码,请尝试更改此选项。

    假定我们有一个文本文件,students.txt,记录了6个学生的性别、身高和体重情况,其内容如下:

    那么我们可以用以下方式读取:

    read.table() 是读取按行列组织的数据的基础方式,其它同类函数,比如 read.csv() 等其实是用特定的选项调用了 read.table() 函数。在 read.table() 函数时,应尽量注意以下几点。

    1.建议明确地在首行定义变量名,并加上参数 header = TRUE。

    2.默认的分隔符为"",可以用空格、制表符、换行符等空白字符分割内容,若非空白分割,则需明确指出。

    3.字符型变量会被自动转换为因子型,在读大型文件时,将 stringsAsFactors 设置为 False,能加快读取速度。

    4.默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。

    5.read.table()会尽量为每个变量选择合适的数据类型,若你想明确指定请用colClasses,或者生成后根据需要修改。

    6.若读中文时出现乱码,请尝试改变编码

    1.4.2 从 Excel 表格中读取

    从 Excel 里读取数据最简单的办法就是将 Excel 表格存储为以逗号分割的 csv 文件,然后用 read.csv() 函数读取。read.csv() 函数其实就是 read.table() 的定制版,其用法与 read.table() 基本一致。

    若要直接读取 Excel 文件,则需安装专门的包,本书推荐 readxl 包。

    readxl 中有若干读取 Excel 数据的函数,最常用的是 read.excel()。调用格式为:

    path: 字符型,文件路径sheet: 字符型或数值型。若为字符型,则指定 Sheet 名;若为数值,则指定 Sheet 的位置;若不指定,默认第一个Sheetrange: 字符型或数值型,读取的单元格范围,比较复杂,请查看文档col_names: 逻辑型或字符型向量;若为逻辑型,则指定是否将第一行作为变量名;若为字符向量,则直接定义各列名col_types: 字符型向量,定义各列数据类型,比如c("numeric","character");若不指定,则自动匹配na: 字符型向量,指定读取为缺失值的字符串 ,默认情况下,会将空单元格读取为缺失值trim_ws: 逻辑型,是否自动过滤掉字符型变量前后的空白(空格、制表符、换行符skip: 数值型,读取前跳过的行数,因为空白的行会自动跳过,所以这是最小的被跳过的行数n_max: 数值型,最大读取行数guess_max: 数值型,猜测列类别时,检测的最大行数

    假如,在 d 盘有一名为 students.xls 的 Excel 文件,你可以通过如下方式读取。

    喜欢闲适安静的生活,懂一点计算机编程,懂一点统计学和数据分析。(爱编程爱统计)

  • ?

    WPS Excel: 如何合并多个Excel文件

    Costa

    展开

    合并多个表格文件,Excel中可以使用power query,WPS中可以使用数据透视表来完成,两者各有优缺点。

    例如,有下面3个表格,表格的标题行中有部分内容相同。怎样合并这样的3个文件呢?

    步骤1:将这3个文件存放到同一个文件夹下(很重要),随意打开一个文件(例如01.xlsx),再新建一个空白表格文件。

    步骤2:在空白表格文件中,插入数据透视表,选择“使用多重合并计算区域”——“选定区域”——“创建单页字段”——“下一步”。

    步骤3:用鼠标选取01.xlsx文件中所有的数据,点击“添加”,就会在“所有区域”看到该数据区域;接着一一选取其他文件区域。

    文件很多的话,这一步也是很麻烦的。可以使用BAT命令先将文件重命名成类似的名字,这样选取了第一个表格数据之后,后面的数据就不需要打开表格选取,而是直接修改文件名字。每个表格中的数据不同,在添加区域时,可以将区域设置的大一些,例如使用“$1:$4”(表示表格前4行)。

    步骤4:数据选取完毕,就可以点击“确认”键创建一个新的数据透视表,会看到如下的汇总结果。界面中部的数据就是各个文件中的原始数据。

    步骤5:还可以将筛选器下的“页1”拖到行字段下,这样我们就会看到界面左侧有“项1”、“项2”和“项3”,分别对应步骤3所添加的文件啦。

    步骤6:如果某个原始表格中的数据变更了,可以在汇总表格上右键一下,点击“刷新”,汇总表数据也会随之更新。

    和Excel的Power Query相比:

    1. Excel中操作更简单一些,不过也只有Excel2016以上的版本才支持。

    2. Excel的power query合并表格文件时,要求每个表格中的工作表名称相同,列数也必须相同,否则合并后数据会有遗漏或差错;使用数据透视表则没有这个限制。

    3. 如果表格中列标题相同、行标题不相同,使用Excel的power query则不能合并;使用数据透视表则可以合并。

    4. 原始数据更新时,两者都可以同步更新。

    5. 数据透视表合并原始数据的同时还能汇总数据。

    谢谢阅读,欢迎点赞、评论、关注和点击头像。

  • ?

    EXCEL干货大讲堂丨几种Excel表格中的提取数据或者文本

    小鲜鱼

    展开

    EXCEL狗们很多时候在进行EXCEL处理的时候,会遇到在身份证上提取生日,在一组数字与本文的字符串里提取数字或者文本。最常见的方法应该是写一大串函数吧,下面小编教大家几种快速提取数据的方法。

    方法一:函数提取。函数:=TEXT(MID(A1,7,8),0000-00-00),进行提取生日,函数的解释为:提取身份证号码从第7位数字开始的8个数,数据的显示格式为0000-00-00。下面操作起来。

    方法二:利用分列按钮进行提取。

    方法三:重点介绍职场利器,Ctrl+E快速智能填充功能(EXCEL 2013版本以上)。需要借left,right,mid,len等等取数都可以通过一个快捷键Ctrl+E填充功能来实现,极大提高来工作效率。下面就开始操作起来。

    ①先手动输入前面两个生日

    ②选择填充的区域,注意需要将手输入的区域一起选择。然后Ctrl+E,就可以自动填充啦。是不是很简单啊

    Ctrl+E快速智能填充功能,还可以用来提取字符串当中的文本或者数字。如下操作:

    Ctrl+E快速智能填充功能,不但可以用来提取,还可以用来合并。如下操作:

  • ?

    西格马大数据:从复杂表格中提取想要的信息

    微仰

    展开

    转载自百家号作者:潮流数码玩家mp

    在学校或者公司中,常常遇到需要从多个含各种信息的同类型表格里面,提取出我们想要的信息,很多小白只会盲目地打开一个又一个表格,复制粘贴到一个表格上,表格少或者信息少还好操作,但遇到大量表格或者需要提取的信息多怎么办呐?

    在避免使用Vlooup的情况下,我将使用EasyRefiner演示如何轻松提取!

    工具/原料

    EasyRefienr谷歌浏览器

    方法/步骤

    我们以多份同类型采购单为例,每份采购单都含有各种信息,而我们只需要汇总提取所有表格中的公司,联系人,电话和合同号。表格类型如图所示

    登陆西格马大数据平台直接打开bigdata.cisdi目前支持微信登陆和公司邮箱注册登陆

    点击上传项目,可以直接勾选所有需要提取信息的表格,成功后进入第二步骤。

    首先可以检查一下,显示的表格是否与我们原本的数据相对应,确认无误后按照如图所示,点击左上角的关键信息提取就可以进行下一步提取操作了。

    按照 公司 联系人 电话和合同号的顺序依次添加标签并且勾选,最后点击执行就自动提取了。

    EasyRefiner会根据我们的表格类型不同,分为多类,我们只需要重复以上的步骤提取所有的,最后点击一键合并就可以合并到同一个表中了

    最后点击右上角的下载文件,就可以保存到本地中了,是不是很轻松便捷呐!

  • ?

    合并多个Excel文件,不管什么版本的Excel或WPS都适用

    寒烟

    展开

    昨日,分享了使用Power Query插件快速合并多个Excel的方法,可惜很多朋友表示还没用上Excel2016。所以,今天分享一个新方法,不管什么版本的Excel,或者WPS表格,都适用。

    实例

    将一个部门所有人半年的销售数据合并到一份Excel文件中。

    思路

    我们想获取单元格A1的内容,就会输入公式“=A1”;如果要获取Sheet1下的A1内容,就会输入“=Sheet1!A1”;如果要获取的在“解晴.xlsx”文件下,就会输入“='D:\数据\[解晴.xlsx]Sheet1'!A1”。基于此,我们可以不用打开Excel文件,便轻松合并多个Excel。

    步骤1:提取Excel文件名称

    在命令提示符中输入“dir /b Excel文件所在路径”获取所有Excel文件的名称,复制名称到一个空白Excel工作表中。然后复制A列所有的名称,选中“B1:H8”区域,按“Ctrl + V”粘贴,这样“A-H”列都粘贴上了Excel文件名。

    为什么是“A-H”列呢,因为原数据就是这样的。

    步骤2:Excel名称转换成一列

    复制“A-H”列数据粘贴到Word文档中,选择“只保留文本”,然后使用“文本转表格”工具转换成一列数据的表格。

    步骤3:创建辅助表,获取源数据单元格地址

    将一列的Excel名称粘贴到汇总表的A列,在“B-I”列输入“A1-H8”,即要合并的Excel文件中数据的单元格地址。

    复制“B1-I8”数据,然后在输入栏左侧的名称中输入“B9:I40”,按Enter键选中这块区域,最后按“Ctrl + V”粘贴,效果同步骤1。

    步骤4:输入公式,连接Excel文件名和数据地址

    J1公式:="t='D:\数据\["&$A1&"]Sheet1'!"&B1

    公式中的“D:\数据\”是Excel文件路径,“Sheet1”是要合并的Excel文件中的工作表名称。

    公式输入后,向右填充,直到结果显示“H1”为止。然后选中这些公式,双击填充所有的公式。

    步骤5:粘贴为数值,然后将文本公式转换成真正的公式

    复制步骤4的结果,选择性粘贴为数值。然后将“t=”替换为“=”。

    所有Excel文件的内容就都合并到一起啦。

    看起来似乎有点复杂,但其实很容易,只要稍微理解一下整个的思路就好了。

    方法优点:

    不限Excel版本和 wps版本,比Power Query灵活。可用于合并多个工作表。想提取几行或几列都可以,取决于你在创建辅助表时,输入了多少单元格地址。本例中的“A1-H1”是标题行,创建辅助表时,删除“A1-H1”,就不会多次提取到标题了。

    谢谢阅读,每天学一点,省下时间充实自己。欢迎点赞、评论、关注和点击头像。

  • ?

    如何把两个excel表格中相同的数据筛选出来?

    迎荷

    展开

    1.将两个工作表放在一个窗口中,如图所示:sheet1是全部学生的,sheet2是某班学生花名。

    2.在sheet1相对应名字同一行的空白出输入=if(countif())。

    3.然后切换到sheet2,选中全部名字并回车。

    4.再切换到sheet1,这时这个函数变成了=if(countif(Sheet2!A1:A44))。

    5.注意:这一步时,要将字母(这里是A)以及数字(这里是1和44)前全加上符号$,=if(countif(Sheet2!$A$1:$A$44))。

    最后,将函数补充完=if(countif(Sheet2!$A$1:$A$44,A2),"S","F"),输入完成后,按回车,显示为S的就是这个班的学生,显示为F的就不是。再从这一行拉下填充,全部学生就可筛选完毕。

    6.筛选S一列,进行复制粘贴第三个表格。

    (本文内容由百度知道网友茗童贡献)

  • ?

    「Excel实用技巧」文件夹目录用最快的方式提取,大多数人都不会

    阿克罗蒂里

    展开

    如果我们的文件夹中有多个个Excel文件,怎么才能把文件名一次的提取到Excel表格中呢?

    或许大家可以去通过批处理bat文件提取的方法,但是有时候我们会出现代码想不起来的情况。今天,我就介绍一种超级简单、粗暴的方法直接提取。

    1、打开文件夹,在复制地址栏中的地址。

    2、把复制的地址粘到IE的地址栏中 按回车打开,文件夹中所有文件名会显示在IE页面中,然后按Ctrl+A全选再复制。

    3、粘贴文本到Excel表格中,稍做调整后完工。

    提取的文件名到底有用吗?? 我回毫不犹豫的说:当然有,批量修改文件名称,制作带链接的文件目录、批量从多个文件中提取数据.....

    当然,今天的技巧不限于Excel文件,适合于所有类型的文件。但知道这个技巧的人很少,替我分享给你身边的小伙伴吧。

  • ?

    如何将excel表格中同列的重复数据筛选并提取出来?

    压抑

    展开

    如何将Excel中同一列的重复数据筛查出来?

    在数据处理中,如果是对少量数据进行处理的话可以通过手动计算等方式进行,但是如果遇到几千上万的数据的时候就比较麻烦了。

    小编遇到这样一个麻烦,表格中的某列数据有多重复的数据,我需要把所有重复的数据提取出来进行分析。

    以excel2007版本为例讲解

    第一步:选中A列数据,单击“开始”菜单,选择“条件格式命令”下面的“突出显示单元格规则”—“重复值

    ”如图:

    第二步:将重复值设置为某种颜色,小编选择的是红色文本(即字体为红色)。如图:

    第三步:对A列数据进行排序,排序依据选择“字体颜色”,次序选择颜色。如图设置:

    排序后的结果

    操作结果是把所有重复数据标记了颜色并通过排序的方式置顶,当然也可以通过筛查功能,将颜色数据筛查出来。

    对于成千上万的大数据的处理,这个方法还是很有效果的。

    到这里就结束了,小伙伴们觉得文章有用欢迎关注、收藏、评论。

    大咖们不喜勿喷哦。

  • ?

    技巧 | 如何在Excel中巧妙的提取你需要的数据?

    Warren

    展开

    Hi,大家好,我是胖斯基

    又是一个突如其来的周三傍晚,风雨交夹,狂风相随……

    想想那许久未更新的公众号,再摸摸那胸前的一整块腹肌,愧色依旧,还是码字减肥吧!

    如何在Excel中巧妙的提取你需要的数据?

    举个例子:

    由于从财务系统导出的数据中,会计科目是一种全级显示,用””来展示层级的划分,但是实际在数据统计或应用的时候,需要用到末级科目,故:如何在批量数据中,快速提取末级科目的名称?

    也许猴急如你,一上来就想着函数或VBA,可行是可行,但是这种霸王硬上弓的模式,往往因用力过猛而不能快速得到预期效果……

    聪明人,应该懂得循序渐进!

    1

    查找替换法

    曾经有那么一个快捷键,它可以在茫茫人海中帮你寻觅“对象”,活好话不多,Ta就是Ctrl+F。

    如果你想起了Ta,那这个问题便迎刃而解,效果如下:

    注意这里查找的时候,用到的查询内容是 【*\】,查找内容替换为空,过程进度的处理基本上是秒级。

    说明:由于要获取的是末级科目名称,故希望在科目信息中,保留的内容是最后一个【\】后面的内容,所以这里查找的时候采用了通配符【*】,组合起来就是【*\】,故:凡是最后一个【\】前的内容都查询出来,并替换为空

    想想,这种温柔的方式,是不是比直接上函数和VBA的来的更和谐?

    2

    快速填充法

    当然条条大路通罗马,何必单恋一种法?

    曾经也有那么一个智能填充工具,Ta有那么一点人工智能的特效,能够想你所想,取你所需……

    Ta就是在Excel2013版及之后推出的一个快速填充工具(Ctrl+E)。如果你想起Ta,那基本也就是万花丛中笑春风般的效果,如下:

    注意:这里手工输入了2条记录(目的在于给Excel更多判断的选择),然后手工拖拽,选择快速填充后,所有末级科目数据自动呈现出来,怎么样?处理进度上是不是也是秒级?

    So,循序渐进是不是很重要?

    慢慢来,你会发现不一样的精彩

    3

    函数法

    这种方法呢不是特别提倡,毕竟不是人人都能上手就来函数,当然,你要是Excel大神,无妨,怎么开心怎么来。

    函数1:=TRIM(RIGHT(SUBSTITUTE(B3,"",REPT(" ",200)),200))

    函数2:=MID(B3,COUNT(,FIND("",B3,ROW($1:$99))),20)

    函数3:=VLOOKUP("*",RIGHT(B3,ROW($3:$24)-{0,1}),2,)

    具体函数逻辑就不在重复累赘说明了

    胖斯基|说

    在Excel中提取有效的数据,是一项频率极高的操作,其处理逻辑基本都已成为套路,学会灵活应用就好。

    当然,依旧要敲黑板说明的是:观察Ta,循序渐进,温柔对待,也许灵巧的技巧,能解决你很大的问题……

    更多精彩,敬请关注Excel老斯基

  • ?

    如何将多个Excel文件合并成一个且保留原有数据?

    九眼

    展开

     如何将多个Excel文件合并成一个且保留原有数据?事实上,我们可以借用Excel宏命令来处理该操作,并且保留原有数据,建立多个Sheet页,具体操作请看下文多个Excel文件合并成一个的方法。

      如何将多个Excel文件合并成一个且保留原有数据?

      1、将需合并的Excel文件放在同一个文件夹中,并这个文件中新建一个Excel文件。

      2、打开新建的Excel文件,按 Alt + F11 键,打开宏,选择视图→代码窗口。

      3、将下面的代码拷贝进去:

    Sub sheets2one() '定义对话框变量 Dim cc As FileDialog Set cc = Application.FileDialog(msoFileDialogFilePicker) Dim newwork As Workbook Set newwork = Workbooks.Add With cc If .Show = -1 Then Dim vrtSelectedItem As Variant Dim i As Integer i = 1 For Each vrtSelectedItem In .SelectedItems Dim tempwb As Workbook Set tempwb = Workbooks.Open(vrtSelectedItem) tempwb.Worksheets(1).Copy Before:=newwork.Worksheets(i) newwork.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "") tempwb.Close SaveChanges:=False i = i + 1 Next vrtSelectedItem End If End With Set cc = Nothing End Sub

      4、点击运行选项运行宏命令。

      5、之后弹出选择对话框,选择要批量合并的Excel名,确定即可。

      6、程序运行完毕后,会自动生成一个工作簿,工作簿内包含所有需合并的Excel文件,将工作簿另存为即可。

      以上步骤便是,合并后的Excel文档会献出多个Sheet页,我们可以很方便的切换了解。

从多个excel文件中提取数据

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP