将文本拆分为多个单元格(Microsoft Excel)
Phil有一系列包含文本的单元格。一些文本太长,因此他需要将其拆分为多个单元格。例如,如果一个单元格包含“棕色狐狸”,并且他需要拆分文本以使任何部分都不能超过12个字符,那么Phil可以轻松地做到这一点。但是他想确保分割是在第12个字符之前的空格处进行的,而不是在第12个字符之前的位置进行。菲尔对如何做到这一点感到困惑。
您可能会认为您可以在Excel中使用“文本到列”工具,但它并不适合该工作。如果将工具设置为基于分隔符(例如空格)拆分文本,则最终在每个单元格中只有一个单词。如果将工具设置为将文本拆分为“固定宽度”,则它不会在空格处拆分单词。它只是确保每个块都是您指定的大小。
您可以使用公式来获得所需的结果,但是这样做会导致公式非常长。例如,如果太长的文本在单元格A3中,则可以使用以下公式在第12个字符之前的空格处拆分该文本的第一块:
=IF(LEN($A3)>12,IF(ISERROR(FIND(" ",MID($A3,12,1) &MID($A3,11,1)&MID($A3,10,1)&MID($A3,9,1)&MID($A3,8,1) &MID($A3,7,1)&MID($A3,6,1)&MID($A3,5,1)&MID($A3,4,1) &MID($A3,3,1)&MID($A3,2,1))),MID($A3,1,1),MID($A3,1, 13-FIND(" ",MID($A3,12,1)&MID($A3,11,1)&MID($A3,10,1) &MID($A3,9,1)&MID($A3,8,1)&MID($A3,7,1)&MID($A3,6,1) &MID($A3,5,1)&MID($A3,4,1)&MID($A3,3,1)&MID($A3,2,1)))) ,RIGHT($A3,LEN($A3)))
请记住,这只是一个公式,只是为了获得第一个块。获取第二,第三,第四和更高块的公式甚至更长。显然,使用公式可能不是最佳方法。
留下使用宏。宏可以检查文本字符串,并轻松将其切成所需长度的片段。考虑以下用户定义的函数:
Function SplitMe(sSentence As String, iPos As Integer, Optional iLen = 12) Dim sSegments() As String Dim iSegments As Integer Dim sRest As String Dim sTemp As String Dim iSpace As Integer Dim J As Integer iSegments = 0 sRest = sSentence sTemp = Left(sRest, iLen + 1) Do Until Len(sTemp) <= iLen iSpace = 0 For J = Len(sTemp) To 1 Step -1 If Mid(sTemp, J, 1) = " " And iSpace = 0 Then iSpace = J Next J If iSpace > 0 Then sTemp = Left(sRest, iSpace - 1) sRest = Mid(sRest, iSpace + 1) Else sRest = Mid(sRest, Len(sTemp) + 1) End If iSegments = iSegments + 1 ReDim Preserve sSegments(1 To iSegments) sSegments(iSegments) = sTemp sTemp = Left(sRest, iLen + 1) Loop iSegments = iSegments + 1 ReDim Preserve sSegments(1 To iSegments) sSegments(iSegments) = sTemp If iPos <= iSegments Then SplitMe = sSegments(iPos) Else SplitMe = "" End If End Function
该函数采用两个或三个参数。第一个参数是要分割的字符串,第二个参数是您要从字符串中选择哪个块,第三个(和可选)参数是每个块的所需长度。如果不使用第三个参数,则该函数假定您希望每个块最多为12个字符。例如,假设文本在单元格A5中,则下面的代码将从文本中返回第二个块,其中每个块的长度最多为12个字符:
=SplitMe(A5,2)
如果文本字符串中的每个单词的长度不超过每个块的指定目标长度,则该函数将返回良好的结果。如果是这样,那么您会得到一些奇怪的结果,包括一些不包含完整单词的块。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(3899)适用于Microsoft Excel 97、2000、2002和2003。