數據分析中有壹個重要的步驟,就是對數據進行預處理,數據的統壹格式化。
例:如何將左邊聯系方式中的手機號碼提取出來,結果如右邊單元格所示:
從A列單元格的數據看,是手機號和固定電話的混和在壹塊的,其中固定電話顯示也不規範,有的有區號,有的沒有區號,有的區號和電話用?-?連接在壹起,有的沒有,而手機號碼也不統壹,有壹個、二個、三個的。
如何數據量較少,可以逐個單元格復制提取,如果單元格很多的情況下,推薦使用VBA的方法批量提取,該VBA代碼可以直接復制使用,不用修改內容
在 Excel中按ATL+F11,進行編程模式下,插入壹個模塊,創建壹個自定義函數sz()函數
輸入的代碼如下所示:
Function sz(xstr As String)
Dim i As Integer
Dim n
For i = 1 To Len(xstr)
If Mid(xstr, i, 1) = 1 And IsNumeric(Mid(xstr, i, 11)) Then
n = Mid(xstr, i, 11)
If Len(n) = 11 Then
sz = sz & "/" & n
End If
End If
Next i
If Len(sz) Then
sz = Right(sz, Len(sz) - 1)
Else
sz =
End If
End Function
然後在單元格中調用自定義函數SZ(A2),得到的結果如下所示:
利用主要的提取原理:手機號第1位是1並且是11位數字
關鍵代碼解釋:
以A3單元格的值,做執行過程分析
58403844 15151884992 15195779387
這個字符的長度是32,讓i從1至32做壹個循環
i=1的時候,執行第壹個IF語句
Mid(xstr, i, 1)=5,並不等於1
直接結束IF語句,繼續i
那麽i=2時,IF也不成立
直到i=10的時候,
Mid(xstr, i, 1)=1,並且IsNumeric(Mid(xstr, i, 11))也是數字
那麽n就截取這11位,如果這個值是11位的,那就傳遞給sz保存下來
結果,繼續i,直到把所有的手機號截取完成
不知道有沒有看懂,沒有看懂的話,就直接復制代碼套用即可。
本節完,