巧用Excel分列功能處理數據


Technorati 標簽: 數據處理

     今天,主要工作就是處理測試數據,統計匯總成圖表來顯示。先來說說要求,然后給出我在折騰這堆數據中遇到的問題以及解決方法。

  問題要求:

      image

格式說明: A是代表時間,低位字節在前,高位字節在后,十六進制格式。B代表電壓值,低位字節在前,高位字節在后,十六進制格式,A和B后面,帶4個無效數據和6個字節的0xFF,這種格式的數據排列都在一行里,一行塞滿后然后繼續填充下一行,如此循環下去,一直填滿到30K的文本文件。

要求: 順序排列時間值和電壓值,編排出隨着時間變化的電壓曲線。

 

解決思路:

    一開始接到這個問題,腦子里想着用shell 腳本來處理,這里面涉及到文本斷行斷句、進制和數據轉換、畫圖等等操作。光用shell是不可能完成了,因此這樣的文本文件有4個,都是這么大小的,肯定要部分程序來處理。下面介紹我是如何處理這個問題的。

     1. 由於每個單元數據的列數是固定的,6個字節有效數據加10個字節的無效數據,構成一個數據單元,這些單元順序的排成一行,首先要做的是把他們分開,最好分成每一行只有一個數據單元,這樣就好便於后續處理。我在這里使用的方法是:利用Editplus的自動換行功能來實現的,具體操作如下,首先選擇Editplus的自動換行,結果如下:

image

這不是我想要的結果,默認的自動換行是以每行80個字符為標准,打開自動換行選項,有如下配置:

image

Editplus里面關於自動換行有兩種選項,一種是根據顯示窗口的大小來決定每行的字符數,另一種是固定每行字符數。我這邊單元數據的列數是固定的,因此,選擇每行固定字符數,設置后,結果如下:

image

第二種方法:利用Windows自帶的記事本,開啟自動換行功能,縮短文本框的寬度,就可以調整自動換行的列數。效果如下:

image

恩,這樣看數據,覺的工整多了,但是隨之的問題也來了,本來,做到這一步,選擇Editplus的列模式(Alt+C激活),就可以直接划去前6個有效字節,然后整體選出拷貝到Excel中的,但是Editplus給出如下提示:

 image

哎,這條路堵住了,然后仔細看看上面的行號,在列模式下,第一行中有4個單元數據,第二行有2條單元數據,第三行有6行單元數據。這下也不好做了,有難度,動動腦袋,又有了如下動作:

因為這里面的數據有一些無效數據,采用列模式,可以根據一些條件來事先過濾一些無效數據,然后把一些數據拷貝到Excel里面去,哎呀:

image

又出現這樣的結果。沒辦法了,只能手動分行,在每行的結尾,按住Alt+Enter來手動划分行,按照上面的列結果,手動分行后如下:

image

每行單元格中,有多行數據,現在是要求把每行前6個字節單獨提取出來?怎么提取?在這里卡了許久,想想列模式,恩,有了。

再將上面的數據,拷貝會Editplus,然后使用列模式,選擇整體的前6個字節,結果如下:

 image

將此字段拷貝到Excel中,結果如下:

 image

恩,這下好了,每行只含有一行的單位數據,現在就好辦了,利用Excel的數據分列功能:

image

將每行的數據單獨划分為一列,結果如下:

image

然后利用Excel的16進制轉10進制的函數,來計算時間值和電壓值,結果以10進制表示。

這里,要注意一點,image

我就是選了這個選項,然后Excel函數死死的算不出來。使用到公式為:=HEX2DEC(B3)*256+HEX2DEC(A3) 最后算的結果如下:

image

想直接用電壓值和時間值這兩列數據作為源數據來畫圖,結果如下:

image

出現這個原因是有一些混雜無效數據寫進去了,不要在意這些細節,經過初步的整理,優化一下圖表的縱坐標的初始值,image

最后得到的結果如下:

image

 

 

總結一下:上述的操作中,除了在Excel中手動分行之外,用到了Editplus的列操作,Excel的分列、函數、畫圖等,效率比起收工篩選強多了。

-----------------------------------------------恩--------------------------------------------------------

打完收工!回家吃飯。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM