CLASS 3:基本資料分析任務
本篇,小篇想要以單獨處理資料方式來切入,怎說是單獨處理資料,例如資料中有空白特殊符號、例如日期資料轉換,例如僅單獨要資料中的一部分等等。
本篇可能看了會覺得,疑那我直接用函數就好啦,學這些作啥??.....QQ
所以本篇會以VBA角度使用這些函數(廢話),所以看到這才領悟是用 VBA的你,可以考慮往回看初學者的VBA資料分析CLASS1或是CLASS2,慢慢你就離自動化更近一些了
一、CLASS 3 課程規劃前篇
資料使用前要做一些處理,也可以稱為資料清洗
1.去除空白或符號
2.拆解字串,萃取出自己需要的部分
3.常用資料轉換,例如數字、文字與日期
4.取代特定文字功能
二、講解:
1.去除空白或符號:
打字時,每個人習慣不同,所以常會出現一個情況,例如一樣的名稱資料,怎資料長度不同的情況發生,通常就是空白或是換行符號惹的禍。
excel內建去除空白的函數 TRIM 就很好用拉,怎用??
ex:有一串文字長這樣"12A12 ",明顯有一個空白。
透過 temp=trim("12A12 "),則temp變數內則存放了去除空白後的字串資料 "12A12"
還有Ltrim跟Rtrim可以參考MSDN教學。
怎去除符號,也可以透過REPLACE 函數。
去除空白:
temp=REPLACE("12A12 "," ","") , "12A12"
去除符號:
temp=REPLACE("12A12 ","A","") , "1212 "
temp=REPLACE("12@12 ","@","") , "1212"
2.拆解字串,萃取出自己需要的部分
一般常見的函數,如LEFT、MID與RIGHT,小編加碼SPLIT
講解:
ex:現有一串文字長這樣"12A24",要取出12跟24怎做?
A=RIGHT("12A24",2),右邊取2個字元
A=LEFT("12A24",2),左邊取2個字元
A=MID("12A24",1,2),從右邊第一位取2個字元
A=MID("12A24",4,2),從右邊第四位取2個字元
加碼:
SPLIT,是字串分割函數,轉換後會變為陣列方式做資料儲存
A=SPLIT("12A24","A"),使用A字串做分割,A變數會變為A陣列,A(0)=12,A(1)=24,這時候是否有問題了,啥是陣列?有機會在聊聊。
3.常用資料轉換,例如數字、文字與日期
講解:
ex:現有一串文字長這樣"1224"。
文字資料如何轉換成數值資料,透過VAL()函數
語法VAL("1224"),文字資料就變成數值資料了
數值怎轉換成文字呢?,透過STR()函數
語法STR(1234),數值資料就變成文字資料"1234"了
P.S 前後加上雙引號,就是文字資料的表示方式
日期該怎處理?
常見日期格式2023/10/18、2012/1/1、20130101
不管是那種格式,強烈建議資料清洗一定要使用同一種格式,同一種格式歐
ex:現在要把20130101轉換為2023/01/01該怎做?
ex:現在要把2013/1/1轉換為2023/01/01該怎做?小編透過LEFT、RIGHT、MID函數來轉換一下
A=LEFT("20130101",4) & "/" & FORMAT(MID("20130101",5,2),"00") & "/" & FORMAT(RIGHT("20130101",2),"00")
A=SPLIT("2013/1/1","/")
A=FORMAT(A(0),"0000") & "/" & FORMAT(A(1),"00") & "/" & FORMAT(A(2),"00")
如果要轉換為民國年呢? 簡單,就是在年減去1911
A=FORMAT(A(0),"0000")-1911 & "/" & FORMAT(A(1),"00") & "/" & FORMAT(A(2),"00")
反之如果要變成20130101這樣的格式呢?
A=SPLIT("2013/1/1","/")
對,拿掉"/"變成""即可
A=FORMAT(A(0),"0000") & "" & FORMAT(A(1),"00") & "" & FORMAT(A(2),"00")
4.取代特定文字功能
ex:現有一串數值資料長這樣"12@24@36@"。
第一可以透過類似去除符號的方式,以replace函數取代。
亦可以透過split方式做拆解後,在合併。
沒有留言:
張貼留言