excel单元格内容怎么拆分
发布网友
发布时间:2022-02-24 10:38
我来回答
共1个回答
热心网友
时间:2022-02-24 12:07
(一)用“分列”的“分隔符”拆分
1、假如要把服装表的“编号”列拆分为两列。右键第二列顶部的 B,在弹出的菜单中选择“插入”,则在第一列与第二列之间插入一列;单击 A 选择 A 列,选择“数据”选项卡,单击“分列”,打开“文本分列向导”窗口,“请选择最合适的文件类型”选择“分隔符号”,单击“下一步”,勾选“其他”,在其右边输入 -,单击“下一步”,单击“完成”,则第一列被从短横处拆分为两列;操作过程步骤,如图3所示:
图3
2、从拆分结果可以看出,拆分后拆分符(-)没有了,如果把一个字作为拆分符也是一样。另外,“文本分列向导”中提供了四种拆分符,分别为“Tab键、分号、逗号和空格”,如果要拆分的内容以其中某个符号居多,可以选它作拆分符。
(二)用“分列”的“固定宽度”拆分,可以拆分为二列或三列以上
1、右键 F 列字母 F,在弹出的菜单中选择“插入”,在 E 列右边插入一列;选中 E 列,选择“数据”选项卡,单击“分列”,打开“文本分列向导”窗口,“请选择最合适的文件类型”选择“固定宽度”,单击“下一步”,把鼠标移到要拆分处对应的标尺处,单击一下,则出现一个指向标尺的箭头,往右拖一点以使箭头恰好处于要拆分处,单击“下一步”,被拆分为的两部分左边加上黑色的背景,可以据此确认是否按要求拆分了,如果符合要求,单击“完成”,如果不符合要求,可以单击“上一步”继续调整,这里已经拆分好了,单击“完成”,则一列被拆分为两列;操作过程步骤,如图4所示:
图4
2、如果要拆分为三列,在“文本拆分向导”窗口的“标尺处”多单击一次就会又出现一个箭头,其它的以此类推。“固定宽度”拆分适用于数据分布均匀对齐的列。
(三)用公式拆分,适用于数据分布不均匀的列
1、拆分列有明显字符的实例
(1)假如要把价格列拆分为数字列与单位列。选中 G2 单元格,把公式 =LEFT(E2,FIND("元",E2)-1) 复制到 G2,按回车,返回 86.9,则E2 价格的数字被拆分到 G2,把鼠标移到 G2 右下角的单元格填充柄上,按住左键,往下拖,则价格列其它单元格的数字也被拆分到 G 列对应的单元格;把公式 =MID(E2,FIND("元",E2),3) 复制到 H2 单元格,按回车,则 E2 价格的单位被拆分到 H2,同样用往下拖的方法,把价格列其它单元格的单位拆分到 H 列对应的单元格;操作过程步骤,如图5所示:
图5
(2)公式说明:
A、Left函数的表达式为:=LEFT(Text, [Num_Chars]),Text 为源文本,Num_Chars 为要截取的字符数,可省略;
Find函数的表达式为:=FIND(Find_Text, Within_Text, [Start_Num]),Find_Text 为要找的文本,Within_Text 为源文本,Start_Num 为查找开始位置,可省略。
Mid函数的表达式为:=MID(Text, Start_Num, Num_Chars),Text 为源文本,Start_Num 为开始截取位置,Num_Chars 为截取字符数。
B、公式 =LEFT(E2,FIND("元",E2)-1) 用 FIND("元",E2)-1 找出“元”在文本中的位置,由于要截取到数字,所以要减 1;然后用 Left函数截取数字。
C、公式 =MID(E2,FIND("元",E2),3) 用 FIND("元",E2) 找出要截取的开始位置,然后用 Mid函数从找出的开始位置起截取 3 个字符。
2、拆分混杂的字符串实例
(1)假如要拆分由“字母数字 + 汉字 + 数字”组成的字符串为三列。选中 B1 单元格,把公式:
=LEFT(A1,LOOKUP(1,0/((LENB(MID(A1,ROW($1:$15),1))=1)*(LENB(MID(A1,ROW($2:$16),1))=2)),ROW($1:$15)))
复制到 B1,按回车,则 A1 中的内容左边的“字母数字”被拆分到 B1 单元格;把鼠标移到 B1 右下角的单元格填充柄上,按住左键,往下拖一直拖到 B3 单元格,则 A2 和 A3 中的内容的“字母数字”分别被拆分到 B2 和 B3 单元格;操作过程步骤,如图6所示:
图6
(2)拆分后面的数字部分。选中 D1 单元格,把公式:
=MID(A1,LOOKUP(1,0/(LENB(MID(A1,ROW($1:$15),1))=2),ROW($2:$16)),15)
复制到 D1,按回车,则 A1 中的内容右边的“数字”被拆分到 D1 单元格;同样用往下拖的方法把 A2 和 A3 中的内容拆分到 D2 和 D3;操作过程步骤,如图7所示:
图7
(3)拆分中间的汉字部分。选中 C1 单元格,把公式 =SUBSTITUTE(SUBSTITUTE(A1,B1,""),D1,"") 复制到 C1,按回车,把 A1 内容中间的“汉字部分”拆分到 C1;同样用往下拖的方法,把 A2 和 A3 的内容的中间“汉字部分”分别拆分到 C2 和 C3;操作过程步骤,如图8所示:
图8
(4)公式说明:
A、拆分左边“字母数字”的公式:
=LEFT(A1,LOOKUP(1,0/((LENB(MID(A1,ROW($1:$15),1))=1)*(LENB(MID(A1,ROW($2:$16),1))=2)),ROW($1:$15)))
① 先用 MID(A1,ROW($1:$15),1) 把 A1 中的每个文字拆分开,结果为:
{"W";"S";"-";"560";"长";"袖";"白";"衬";"衫";"8";"6";".";"9"},是怎么返回这个数组的?ROW($1:$15) 返回一个 1 到 15 的数组(15 表示 A1 中的字符总数),即 {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},Mid 每次从数组中取出一个元素作为开始截取参数,并每次截取一个字符;例如:第一次从数组中取出 1,即从第一位开始截取,截取一个字符,返回 "W";第二次从数组中取出 2,即从第二位开始截取,截取一个字符,返回 "S";以此类推直到取完数组中的所有元素。
② 则 LENB(MID(A1,ROW($1:$15),1)=1 变为 LENB({"W";"S";"-";"560";"长";"袖";"白";"衬";"衫";"8";"6";".";"9"})=1,LenB 依次从数组中取出每一个元素,并返回它们的字节数,结果变为 {1,1,1,1,1,1,2,2,2,2,2,1,1,1,1}=1,因为每个字母数字的字节数为 1,每个汉字的字节数为 2。然后再取数组中的每一个元素与 1 比较,如果等于 1,则返回 True,否则返回 False,最后返回{True,True,True,True,True,True,False,False,False,False,False,True,True,True,True}。
③ LENB(MID(A1,ROW($2:$16),1))=2 与 LENB(MID(A1,ROW($1:$15),1))=1 是一样的道理,所不同的是它从第二位开始把 A1 中的每个文字拆分开,也就是舍弃第一个字,为什么要这样拆分?LENB(MID(A1,ROW($2:$16),1))=2 返回的结果为 {1,1,1,1,1,2,2,2,2,2,1,1,1,1,0}=2,然后取出数组中的每个元素与 2 比较,如果相等,则返回 True,否则返回 False,最后返回结果{False,False,False,False,False,True,True,True,True,True,False,False,False,False,False}。
④ 至此,(LENB(MID(A1,ROW($1:$15),1))=1)*(LENB(MID(A1,ROW($2:$16),1))=2) 变为:
{True,True,True,True,True,True,False,False,False,False,False,True,True,True,True}*
{False,False,False,False,False,True,True,True,True,True,False,False,False,False,False}
接着把两个数组对应的元素相乘,True 被转为 1,False 被转为 0,返回结果为:{0,0,0,0,0,1,0,0,0,0,0,0,0,0,0},即第 6 个为 1,恰好是 A1 中数字 0 与汉字“长”相交的结果。
⑤ 公式变为 =LEFT(A1,LOOKUP(1,0/({0,0,0,0,0,1,0,0,0,0,0,0,0,0,0}),ROW($1:$15))),接着用 0 除以数组中的每一个元素,公式变为:
=LEFT(A1,LOOKUP(1,{#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,0,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!},ROW($1:$15)))
只有 0 / 1 = 0,其它都返回分母为 0 错误(即 #DIV/0!);进一步计算 ROW($1:$15),它返回{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}。
⑥公式变为:
=LEFT(A1,LOOKUP(1,{#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,0,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!},{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}))
接着用 LookUp 在含有 #DIV/0! 的数组中查找 1,由于找不到 1,LookUp 返回小于等于 1 的最大值,所以返回第 6 个 0,然后再根据 0 在数组中的位置在 1 到 15 的数组中查找与 0 的位置(即第 6 位)对应的元素,因此返回 6。
⑦ 公式变为:=LEFT(A1,6),最后用 Left 从左边截取 A1 中的文字左边 6 个字符,即 WS-560。
B、拆分右边部分的公式:=MID(A1,LOOKUP(1,0/(LENB(MID(A1,ROW($1:$15),1))=2),ROW($2:$16)),15)
① LENB(MID(A1,ROW($1:$15),1))=2 返回的值上面已经分析过,结果为{False,False,False,False,False,False,True,True,True,True,True,False,False,False,False},接着用 0 除以数组中的每个元素,返回结果为 {#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,0,0,0,0,0,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!}。
② ROW($2:$16) 返回 2 到 16 的数组,即 {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},则公式变为:
=MID(A1,LOOKUP(1,{#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,0,0,0,0,0,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!},{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}),15)
接着用 LookUp 在含有 #DIV/0! 的数组中查找 1,由于找不到 1,所以返回小于等于 1 的最大值,又由于有 5 个 0,所以返回最后一个 0,然后根据返回 0 在数组中的位置在 2 到 16 的数组中找与 0 对应位置的值,即第 11 位的值,该值为 12。
③ 公式变为:=MID(A1,12,15),最后用 Mid 把 A1 中的文字从第 12 开始截取,共截取 15 字符,返回 A1 中的文字后面的数字 86.9。提示:Mid函数如果指定的截取字符数大于文本长度,只截取到末尾。
C、拆分中间的部分公式:=SUBSTITUTE(SUBSTITUTE(A1,B1,""),D1,"")
公式由两个 SubStitute函数嵌套组成,里面的 SUBSTITUTE(A1,B1,"") 用于替换 B1 的内容,即用“空”替换 A1 中的 B1(用 WS-560 替换“WS-560长袖白衬衫86.9”中“WS-560”);外面的 SubStitute 用于替换 D1 的内容,经 SUBSTITUTE(A1,B1,"") 的替换,公式变为:=SUBSTITUTE("长袖白衬衫86.9",D1,""),再用“空”替换 D1 的文字(86.9),最后返回“长袖白衬衫”。
提示:公式 =SUBSTITUTE(SUBSTITUTE(A1,B1,""),D1,"")可以省略 "",即可这样写:=SUBSTITUTE(SUBSTITUTE(A1,B1,),D1,)。