巧用Excel分列功能处理数据
今天,主要工作就是处理测试数据,统计汇总成图表来显示。先来说说要求,然后给出我在折腾这堆数据中遇到的问题以及解决方法。
问题要求:
格式说明: A是代表时间,低位字节在前,高位字节在后,十六进制格式。B代表电压值,低位字节在前,高位字节在后,十六进制格式,A和B后面,带4个无效数据和6个字节的0xFF,这种格式的数据排列都在一行里,一行塞满后然后继续填充下一行,如此循环下去,一直填满到30K的文本文件。
要求: 顺序排列时间值和电压值,编排出随着时间变化的电压曲线。
解决思路:
一开始接到这个问题,脑子里想着用shell 脚本来处理,这里面涉及到文本断行断句、进制和数据转换、画图等等操作。光用shell是不可能完成了,因此这样的文本文件有4个,都是这么大小的,肯定要部分程序来处理。下面介绍我是如何处理这个问题的。
1. 由于每个单元数据的列数是固定的,6个字节有效数据加10个字节的无效数据,构成一个数据单元,这些单元顺序的排成一行,首先要做的是把他们分开,最好分成每一行只有一个数据单元,这样就好便于后续处理。我在这里使用的方法是:利用Editplus的自动换行功能来实现的,具体操作如下,首先选择Editplus的自动换行,结果如下:
这不是我想要的结果,默认的自动换行是以每行80个字符为标准,打开自动换行选项,有如下配置:
Editplus里面关于自动换行有两种选项,一种是根据显示窗口的大小来决定每行的字符数,另一种是固定每行字符数。我这边单元数据的列数是固定的,因此,选择每行固定字符数,设置后,结果如下:
第二种方法:利用Windows自带的记事本,开启自动换行功能,缩短文本框的宽度,就可以调整自动换行的列数。效果如下:
恩,这样看数据,觉的工整多了,但是随之的问题也来了,本来,做到这一步,选择Editplus的列模式(Alt+C激活),就可以直接划去前6个有效字节,然后整体选出拷贝到Excel中的,但是Editplus给出如下提示:
哎,这条路堵住了,然后仔细看看上面的行号,在列模式下,第一行中有4个单元数据,第二行有2条单元数据,第三行有6行单元数据。这下也不好做了,有难度,动动脑袋,又有了如下动作:
因为这里面的数据有一些无效数据,采用列模式,可以根据一些条件来事先过滤一些无效数据,然后把一些数据拷贝到Excel里面去,哎呀:
又出现这样的结果。没办法了,只能手动分行,在每行的结尾,按住Alt+Enter来手动划分行,按照上面的列结果,手动分行后如下:
每行单元格中,有多行数据,现在是要求把每行前6个字节单独提取出来?怎么提取?在这里卡了许久,想想列模式,恩,有了。
再将上面的数据,拷贝会Editplus,然后使用列模式,选择整体的前6个字节,结果如下:
将此字段拷贝到Excel中,结果如下:
恩,这下好了,每行只含有一行的单位数据,现在就好办了,利用Excel的数据分列功能:
将每行的数据单独划分为一列,结果如下:
然后利用Excel的16进制转10进制的函数,来计算时间值和电压值,结果以10进制表示。
这里,要注意一点,
我就是选了这个选项,然后Excel函数死死的算不出来。使用到公式为:=HEX2DEC(B3)*256+HEX2DEC(A3) 最后算的结果如下:
想直接用电压值和时间值这两列数据作为源数据来画图,结果如下:
出现这个原因是有一些混杂无效数据写进去了,不要在意这些细节,经过初步的整理,优化一下图表的纵坐标的初始值,
最后得到的结果如下:
总结一下:上述的操作中,除了在Excel中手动分行之外,用到了Editplus的列操作,Excel的分列、函数、画图等,效率比起收工筛选强多了。
-----------------------------------------------恩--------------------------------------------------------
打完收工!回家吃饭。。。
巧用Excel分列功能处理数据的更多相关文章
- Excel--数据分列功能
原文:http://www.ittribalwo.com/article/3963.html excel分列功能一:按照固定宽度进行数据拆分 情景: 如下图所示,在日常工作中,我们经常需要根据人员的身 ...
- Excel技巧--巧用分列功能整理日期格式
遇到这样混乱的日期列表,可以使用“分列”功能来整理: 1.选择该列,点击“数据”-->“分列”功能: 2.在对话框中的第1.2步都不用设置,到第3步选择“日期”格式: 4.完成后,再使用单元格格 ...
- 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能
我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...
- 个人永久性免费-Excel催化剂功能第100波-透视多行数据为多列数据结构
在数据处理过程中,大量的非预期格式结构需要作转换,有大家熟知的多维转一维(准确来说应该是交叉表结构的数据转二维表标准数据表结构),也同样有一些需要透视操作的数据源,此篇同样提供更便捷的方法实现此类数据 ...
- 个人永久性免费-Excel催化剂功能第91波-地图数据挖宝之行政区域信息实时下载(含经纬度)
移动互联网和O2O兴起的这十年时间里,由地图LBS功能衍生出一大堆的极高商业价值的数据及应用,地图相关的数据,也是数据分析过程中一个大宝藏,从此篇开始将带给大家一系列的地图相关的数据采集,满足数据分析 ...
- 个人永久性免费-Excel催化剂功能第66波-数据快速录入,预定义引用数据逐字提示
在前面好几波的功能中,为数据录入的规范性做了很大的改进,数据录入乃是数据应用之根,没有完整.干净的数据源,再往下游的所有数据应用场景都是空话.在目前IT化进程推进了20多年的现状,是否还仍有必要在Ex ...
- 个人永久性免费-Excel催化剂功能第20波-Excel与Sqlserver零门槛交互-数据上传篇
Excel作为众多数据存储的交换介质,在不同的系统内的数据很少可以很连贯地进行整合分析,一般的业务系统都会提供导出Excel作为标配功能供用户使用系统内生成的数据. 此时最大的问题是,Excel很维去 ...
- PHP的laravel框架后台实现数据导出excel的功能
要想在PHP后台实现excel导入导出功能,一种简单有效的方法就是使用phpexcel插件. 要使用phpexcel插件,首先需要下载composer,这个工具是专门用来管理项目中库之间的依赖关系的. ...
- 巧用Excel提高工作效率
程序员如何巧用Excel提高工作效率 主要讲解下Excel中VLOOKUP函数的使用,相比于上一篇中的内容,个人觉得这个相对高级一些. 1.使用背景 为什么会使用到这个函数呢,背景是这样的,有两个系统 ...
随机推荐
- Spring SqlRowSet example--转载
原文地址:http://www.roseindia.net/tutorial/spring/spring3/jdbc/sqlrowset.html The 'SqlRowSet' is used to ...
- 关于删除7z历史解压路径
目前7zip尚无此功能,只能从注册表入手了,7zip历史记录保存在注册表 HKEY_CURRENT_USER\Software\7-Zip\FM 下的CopyHistory和FolderHistory ...
- tachyon 命令行接口
Usage: tachyon COMMAND where COMMAND is one of: format [-s] 格式化Format Tachyon (如果指定 -s 参数,表示在 underf ...
- oracle内置sql函数(转)
转自:http://www.cnblogs.com/yening10000/archive/2009/07/02/1515284.html F.1字符函数——返回字符值 这些函数全都接收的是字符族类型 ...
- L - Fabled Rooks(中途相遇法和贪心)
Problem F: Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n×n board subject to the ...
- iOS (catagroy)类别
1:可以为类添加新的方法,但不能添加实例变量. 2:第一,无法向类中添加新的实例变量.类别没有位置容纳实例变量. 第二,名称冲突,即类别中的方法与现有的方法重名.当发生名称冲突时,类别具有更高的优先级 ...
- [Java] HashMap的用法
重点介绍HashMap.首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.在下文中会 ...
- Oracle 常用命令大全
一.如何有效地利用数据字典 ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图.数据字典名称是大写的英文字符. 数 ...
- C语言中的内存压缩技术
C语言中的内存压缩技术 前言 在整个研究生阶段我都在参与一个LTE协议栈实现的项目,在这个项目中,我们利用一个自己编写的有限状态机框架将协议栈中每一层实现为一个内核模块.我们知道,在编写内核代码时需要 ...
- Linux后台运行
关于linux后台 ctrl + z jobs -l fg %jobnumber 后台调前台 bg %jobnumber 后台暂停--后台运行 kill pid ps -aux | grep &quo ...