爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 40884|回复: 40

[讨论] EXCEL的表格间数据引用兼谈matlab数据免编程读取(结合EXCEL)

  [复制链接]

新浪微博达人勋

发表于 2013-1-24 19:37:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 斥鷃 于 2013-6-27 08:17 编辑

后面两点算是比较山寨的小总结,营养价值不高,没什么耐心的童鞋看第一点就行了。
在论坛中也有介绍TXT、EXCEL文件读取的帖子了,比如matlab中对EXCEL的读写(比较喜欢这篇),matlab对于文本文件(txt)数据读取技巧的总结,等等。另外《matlab在大气科学中的应用》这篇是非常好的matlab数据读取和绘图入门教材(论坛气象资料站里有),要进行数据正规读取或编程进行文件批量读取的时候最好看看。

一、EXCEL数据表格间引用(lookup函数):
首先这个问题的提出是这么个情况,导师给的数据里面只有站点的站点号和经纬度,但是分析时需要找到相应站的站名,这时候我从网上荡了一个全国站号与站名对应的资料(论坛上好像不许发这种资料,就不发了哈~),故须从中找出我所需要这百来个站点的站名,这时候就用到了lookup函数:
最好将两张要整合的表格放在一个工作簿里面,引用时候方便些,不过问题也不大,千万注意,将你要引用的工作表按照引用的数据行(列)按照升序排列,在我这个例子中是气象站的站号;
排列.png
然后定位到要从另一个工作表引用数据的单元格,单击使用函数,其中lookup函数在“查找和引用”函数组里(若要更多信息可以在函数库里面寻求帮助):
插入函数.png
选定lookup函数的默认方式,进入参数设定环节
参数.png
函数参数如下:
lookup_value:   搜寻值,EXCEL会在你所设定的lookup_vector区域中搜寻这个值,我这里是原表格每个站站点号;
lookup_vector: 搜寻值的搜寻区域,在本例中,自然是另外一张全国站点号里的站点号这一列了;
result_vector:   搜寻返回值,以列为例,EXCEL会搜寻lookup_vector中为lookup_value值元素的行标,然后找你所设定result_vector中相同行的元素作为返回值,我要得到站点名称信息,则选定站名这一列

设定完参数以后,单击确定,就可以出结果啦,以下就是利用填充柄拉出下面的结果(假如选定范围不是整行或整列,注意在你要固定的行列标前加$符号以固定行列标位置)~这次的结果如下:
结果.png
注记:1.除了lookup函数以外,hlookup和vlookup也可以实现行和列引用功能,但是两个函数都是对首行或者首列作为搜寻的lookup_vector,进行选择的选区是一个选择区域,设定引用的区域为行标和列标,有兴趣的朋友可以自己试试。
           2.无论上述哪个函数,再强调一次,在做处理之前,必须对搜寻表格按搜寻值所在区域进行升序排序处理

二、EXCEL数据读写:
matlab读取EXCEL最快的方法,个人认为不是状态栏中的Import,而是——复制+粘贴
首先新建一个空的矩阵,然后从workspace里双击矩阵打开属性表;
将EXCEL表格数据复制,这样做有这么几个好处,一个是可以除去因为存在文字等因素造成的读取麻烦,另一个是可以利用EXCEL自身的筛选和数据处理功能很快找到要找的数据;
最后粘贴进属性表,粘贴后command窗口里面可以会有报错,不用管它就行了。
同样的方法,不需要xlswrite,可以直接从matlab值属性表里面复制粘贴数据给EXCEL,任何表格数据(包括origin、spss等等)都可以通过这个方法处理,而矩阵中个别元素的修改同样可以从属性表里进行。

三、TXT数据与EXCEL数据转换:
office2010版的EXCEL在数据栏下面就有自文本中读取的选项,估计2007和WPS里面在相同的位置也有,至于2003版office没试过,不过应该可以从数据菜单栏里面找到相应的选项,下面以office2010版为例介绍读取:
TXT.png
读取数据后,进入下面的对话框,其中导入起始行是指从哪一行开始导入数据,而上面单选框里面的分隔符号和固定宽度是数据进行分隔的依据;
step1.png
分隔符号选项可以选择多个分隔符进行分列(其中换行自动认为是分行的依据),也可以自定义分隔符进行分,这意味着对某些TXT文本我们可以通过选择替换的方式人为设定分列而方便读取而固定间隔则可以设定列间距,从而实现不同字符长度的数据分隔(暂时只发现了手工分隔,若有发现如何设定间距大小的定请不吝赐教~~);
固定.png
而后是设置一些文本格式,单击完成就完成数据导入啦~
导入数据后可以通过对EXCEL的转换方式把数据读入matlab,同样的原因,可以省去处理字符等的麻烦,读取还是比较方便的。

写在最后:EXCEL是比较常见的软件,所以用它来做些数据预处理工作还是很好的,对VBA编程了解不多,否则它的功能会更强大,帖子营养价值不是很高~


评分

参与人数 3金钱 +54 贡献 +12 收起 理由
胖胖 + 20 很用心的总结,赞一个
mofangbao + 20 + 8 我来晚了
Aires + 14 + 4 很好的总结

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-17 11:02:19 | 显示全部楼层
感谢楼主的总结!还有楼主那个vlookup函数,可以这样写试试vlookup($A1,'sheet1'!C:D,2,0),不一定先要按搜寻值所在区域进行升序排序处理的,也可以得到结果
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-1-24 19:42:52 | 显示全部楼层
自己坐沙发了~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-1-24 21:22:41 | 显示全部楼层
确实是,其实office本身一些功能就特别强大,无论再加上编程,呵呵
支持一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-1-24 22:26:33 | 显示全部楼层
看数据好像是做西南地区的研究哈,斥鷃喜欢用matlab处理数据?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-1-24 22:58:09 | 显示全部楼层

本人是云大的,所以用的这块比较多。是哈,个人比较熟悉matlab,用得比较多~有些还是用grads好些,不过matlab通用些。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-1-24 23:07:24 | 显示全部楼层
顶楼主!!!!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-1-24 23:46:11 | 显示全部楼层
kongfeng0824 发表于 2013-1-24 23:07
顶楼主!!!!!!

向你学习呢,不是本专业还这么热情发帖,呵呵~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-1-25 00:06:33 | 显示全部楼层
斥鷃 发表于 2013-1-24 23:46
向你学习呢,不是本专业还这么热情发帖,呵呵~

呵呵不敢当。现在学习极端降水。被逼无奈呵呵
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-1-25 09:24:24 | 显示全部楼层
斥鷃 发表于 2013-1-24 22:58
本人是云大的,所以用的这块比较多。是哈,个人比较熟悉matlab,用得比较多~有些还是用grads好些,不过ma ...

其实matlab的功能强大,要是用好了,是很有用的。以后有用提还要请教你:)
你什么时候毕业?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-1-25 09:30:11 | 显示全部楼层
viking 发表于 2013-1-25 09:24
其实matlab的功能强大,要是用好了,是很有用的。以后有用提还要请教你:)
你什么时候毕业?

明年,其实我自己也好多要学,看看人家帖子才知道好多函数自己不知道,版主他们才是大神,相互学习吧~呵呵~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表