Excel分列方法汇总
1、函数:
TRIM+MID+SUBSTITUTE+REPT:
A2单元格值为” 1,★,zhongguo,北京,Excel”,将其分为1、★、zhongguo、北京、Excel:
(1)在B2单元格输入” =TRIM(MID(SUBSTITUTE($A2,",",REPT(" ",50)),50*COLUMN(A:A)-49,50))”,向右填充可得;
(2)在B2单元格输入” =TRIM(MID(SUBSTITUTE($A2,",",REPT(" ",LEN($A2))),LEN($A2)*(COLUMN(A:A)-1)+1,LEN($A2)))”,向右
填充可得。
MID+FIND:
A2单元格为”中国VS英国”,将其分为“中国”、“英国”:
在B2单元格输入” =MID(A2,1,FIND("V",A2)-1)”,在C2单元格输入” =MID(A2,FIND("S",A2)+1,10)”。
Left:
(1)LEFT 基于所指定的字符数返回文本字符串中的第一个或前几个字符。
语法:LEFT(text,num_chars)
Text 是包含要提取字符的文本字符串。
Num_chars 指定要由LEFT 所提取的字符数,Num_chars 必须大于或等于0,如果num_chars 大于文本长度,则LEFT 返回所有文本,如果省略num_chars,则假定其为1。
例如:返回16012/501450=460|00|9771|3591中的16012
=left("16012/501450=460|00|9771|3",5)回车即可
2、VBA代码:
比如说,当你有一列数为a;b;c,随后以";"为分隔符,使用分列菜单将其分为三列,第一列内容为a、第二列为b、第三列为c:
代码如下:
Sub ResetText2ColumnsDelimiter()
Dim rngEmptyCell As Range
On Error Resume Next
Set rngEmptyCell = ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).Cells(1, 1)
rngEmptyCell.Value = "ABC"
rngEmptyCell.TextToColumns Destination:=rngEmptyCell, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:= Array(1, 1), TrailingMinusNumbers:=True
rngEmptyCell.Clear
End Sub
3、“分列”功能:
(1)对于16012/501450=460|00|9771|3591此类数据,如果只是想提取前5位的话,还可以通过EXCEL中“数据”-“分列”的功能来实现。
实现方法:首先要确保16012/501450=460|00|9771|3591数据所在列的后续几列是没有数据的,避免分列后将后续列的数据覆盖了,当然了,覆盖之前EXCEL会有提示窗口弹出的。
然后选中需要分列的列,接着点击“数据”-“分列”,弹出如下图所示窗口:
点击“下一步”,如下:
因为16012/501450=460|00|9771|3591数据中16012后面的是“/”符号,所以在上图的“其他”选项中要相应的填“/”符号,然后“下一步”:
点击“完成”,之后就能看到原16012/501450=460|00|9771|3591数据所占用的列,被16012占用,其他剩余数据
501450=460|00|9771|3591后移到了下一列。
(2)如果遇到9771|3591这样的数据,我们想将3591提取出来,该怎么办呢?用left函数不行,用2中的“分列”方法也不行,因为在键盘上找不到“|”这样的符号,无法输入。
对这种情况,也可以用“数据”-“分列”,只是方式不同于2所描述的内容。
实现方法:首先也要确保9771|3591数据所在列的后续列是没有数据的,然后点击“数据”-“分列”,弹出窗口:
注意,这里要选择“固定宽度”方式,然后点击“下一步”,此处与2不同,弹出如下窗口:
在上图,将鼠标移动到“数据预览”中的标尺上,在“10”的位置,按下鼠标左键,按住不要松开,然后移动到“|”这个符号的后面,松开鼠标左键,此时的窗口应该是下图所示状态:
点击“下一步”,如下图:
最后,点击“完成”,3591就会显示在9771|3591数据所在列的后续列中。