Phil에는 텍스트가 포함 된 일련의 셀이 있습니다. 일부 텍스트가 너무 길어서 여러 셀로 분할해야합니다. 예를 들어, 셀에 “the quick brown fox”가 포함되어 있고 12 자보다 길지 않도록 텍스트를 분할해야하는 경우 Phil은 쉽게 할 수 있습니다. 그러나 그는 정확한 12 번째 문자가 아닌 12 번째 문자 앞의 공간에서 분할이 이루어 지길 원합니다. Phil은이 작업을 수행하는 방법에 대해 당황했습니다.

Excel에서 Text to Columns 도구를 사용할 수 있다고 생각할 수도 있지만 작업에는 적합하지 않습니다. 공백과 같은 구분 기호를 기준으로 텍스트를 분할하도록 도구를 설정하면 각 셀에서 단일 단어로 끝납니다. 텍스트를 “고정 너비”로 분할하도록 도구를 설정하면 공백에서 단어를 분할하지 않습니다. 각 청크가 지정한 크기인지 확인합니다.

수식을 사용하여 원하는 결과를 얻을 수 있지만 그렇게하면 놀랍도록 긴 수식이 생성됩니다. 예를 들어 너무 긴 텍스트가 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

이 함수는 2 개 또는 3 개의 매개 변수를 사용합니다. 첫 번째 매개 변수는 분할 할 문자열이고 두 번째 매개 변수는 문자열에서 원하는 청크이며 세 번째 (및 선택적) 매개 변수는 각 청크의 원하는 길이입니다. 세 번째 매개 변수를 생략하면 함수는 각 청크가 최대 12자인 것으로 가정합니다. 예를 들어, 텍스트가 A5 셀에 있다고 가정하면 다음은 각 청크 길이가 최대 12자인 텍스트에서 두 번째 청크를 반환합니다.

=SplitMe(A5,2)

이 함수는 텍스트 문자열의 각 단어가 각 청크에 대해 지정된 대상 길이보다 길지 않으면 좋은 결과를 반환합니다. 그렇다면 전체 단어를 포함하지 않는 일부 청크를 포함하여 이상한 결과를 얻을 수 있습니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (3899)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.