Excel拆分單元格内數據是一個高級技能,一般情況下,很少這麼操作。
當然,會這個操作的人也很多。
首先,我們理解一下什麼是"拆分單元格數據",本節講的"拆分單元格"不是把一個列拆分為幾個列,而是以某種格式的分隔符為标志,把單元格内的數據分别拆開,然後添加到不同的單元格中。
這個操作同樣用到一個方法,很明顯,vba操作數據表格的時候,首要有個對象,然後就是對這個對象進行什麼樣的方法處理。
拆分單元格數據,用到Range對象,對象的方法是TextToColumns,意思就是将文本轉換為列。
方法參數如下圖所示:
No.2
這個方法參數比較多,但是應用的時候,不會全部寫出來,畢竟使用到的僅僅是某些。
語法:
Range.TextToColumns(Destination、 DataType、 TextQualifier、 ConsecutiveDelimiter、 Tab、Semicolon、Comma、Space、 Other、 OtherChar、 FieldInfo DecimalSeparator、 ThousandsSeparator、 TrailingMinusNumbers)
方法它執行之後,會将拆分的數據,默認依次放到被拆分單元格之後。
如上圖所示,粉色部分為被拆分數據,拆分之後的數據就保存到之後淺灰色單元格内。
這功能在應用中,常常用到将一些混合的數據進行分列處理。
比如,有一列數據,裡面有姓名、年齡、身份證号、地址,四個關鍵字内容。
要分别把這四個内容放到不同列裡面,就用這個方法來實現。
其中,這四個關鍵字之間要有一個分隔符,一般有空格,逗号,Tab制表符,分号等字符。
當然,如果不喜歡這些字符,也可以自定義分隔符。
使用Other=True,和OtherChar來定義分隔符。
注意:
如果Other指定為True,那麼OtherChar參數就為必填項目,同時使用。
參數:Destination定義了被拆分後的數據存放地址。
No.3下實例操作演示:
Private Sub TextToColumnsChange()
Application.DisplayAlerts = False
Dim xValue As String
xValue = InputBox("數據輸入", "請輸入數據:", "This is a TextToColumn List.")
If VBA.Len(VBA.Trim(xValue)) = 0 Then Exit Sub
Dim cell As Range
Set cell = ActiveSheet.Range("B2:B10")
With [A1].Offset(2, 0).Resize(cell.Rows.Count, UsedRange.Cells.Columns.Count 1)
.Clear '清除原數據内容
End With
With cell.Item(1).Offset(0, 1) '清除原拆分内容
.Select
.UnMerge
Selection.Clear
End With
With cell.Item(1) '添加表頭
.Value = "數據内容"
.HorizontalAlignment = xlCenter
.Interior.Color = RGB(221, 92, 255)
.Borders.LineStyle = 1
.Columns.AutoFit
End With
With cell.Offset(1, 0) '添加原數據内容
.ClearContents
.Value = xValue
.HorizontalAlignment = xlCenter
.Interior.Color = RGB(221, 92, 255)
.Borders.LineStyle = 1
.Columns.AutoFit
With .Offset(0, 1)
.Value = .Offset(0, -1).Value
.TextToColumns Space:=True '拆分數據内容 并向後填充
End With
End With
'設置拆分内容格式
With cell.Offset(0, 1).Resize(cell.Rows.Count 1, cell.Cells(2, 1).End(xlToRight).Column - cell.Cells(2, 1).Column) 'Me.Cells(3, Me.Cells.Columns.Count).End(xlToLeft).Column - 2)
.Columns.AutoFit
.RowHeight = 28
.HorizontalAlignment = xlCenter
.Interior.Color = RGB(221, 223, 255)
.Borders.LineStyle = 1
End With
'合并表頭
cell.Cells(1, 2).Resize(1, cell.Cells(2, 1).End(xlToRight).Column - cell.Cells(2, 1).Column).Merge
With cell.Item(1).Offset(0, 1)
.Value = "拆分後内容"
End With
Application.DisplayAlerts = True
End Sub
本例有一些比較複雜的地方,代碼較多,看上去不太友好。
其功能是,在一個輸入框内輸入一串以空格為間隔的字符串,然後将這個字符串拆分後放置到多列單元内。
其中,隻簡單使用了TextToColumns Space:=True來實現拆分。
本行代碼意思是以空格作為拆分字符。
其它字符:
TextToColumns Tab:=True'制表符Tab
TextToColumns Semicolon:=True'分号
TextToColumns Comma:=True'逗号
本例就講這些,對于如何針對表格單格進行拆分,以後再做一個表格來進行演示。
歡迎關注、收藏。
---END---
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!