Muhammad는 워크 시트에 긴 회사 이름 목록이 있습니다. 각 회사의 이름에는 모든 공백이 제거되었으므로 (예를 들어) “Astro Physics”대신 “AstroPhysics”로 표시됩니다. Muhammad는 모든 회사 이름을 처리하여 셀의 첫 번째 문자를 제외한 모든 대문자 사이에 단일 공백을 삽입하는 방법이 필요합니다. 그는 이것을 할 수있는 쉬운 방법이 있는지 궁금합니다.

공백을 추가 할 수있는 몇 가지 방법이 있습니다. 불가피한 매크로 기반 솔루션에 도달하기 전에 회사 이름을 검토 할 수 있습니다. 이름의 각 단어 사이에 공백 대신 인쇄되지 않는 문자가있을 수 있습니다. 셀을 편집하고 대문자 앞에 몇 문자 앞에 삽입 지점을 배치 한 다음 오른쪽 화살표를 여러 번 눌러이를 확인할 수 있습니다. 누를 때마다 삽입 점이 오른쪽으로 한 칸 이동하는 것을 볼 수 있습니다. 공간이 있어야하는 곳에 “주저”하는 것처럼 보이면 인쇄되지 않는 문자가있는 것입니다.

이 경우 가장 좋은 해결책은 찾기 및 바꾸기 작업을 수행하여 인쇄되지 않는 문자를 실제 공백으로 바꾸는 것입니다. (인쇄되지 않는 문자를 선택하고 Shift 키를 누른 상태에서 믿고있는 위치에서 오른쪽 화살표를 누른 상태로 복사 한 다음 찾을 내용 상자에 붙여 넣어 검색을 수행 할 수 있습니다.)

데이터에 인쇄되지 않는 문자가 없다고 가정하면 비 매크로 접근 방식을 사용해 볼 수도 있습니다. 아마도 가장 간단한 방법은 도우미 열을 한두 개 추가하는 것입니다. 첫 번째에는 회사 이름 내에서 두 번째 대문자의 위치를 ​​파악하는 수식을 입력 할 수 있습니다. 회사 이름이 A1 셀에 있다고 가정하면 다음 수식을 배열 수식으로 입력해야합니다.

=SMALL(FIND(0,SUBSTITUTE(A1,CHAR(ROW(INDIRECT("65:90"))),0)&0),2)

이 수식이 B1 셀에 입력 된 경우 다음을 사용하여 원래 회사 이름에 공백을 삽입 할 수 있습니다.

=LEFT(A1,B1-1)&" " & RIGHT(A1,(LEN(A1)-B1)+1)

그러나이 접근 방식에는 큰 단점이 있습니다. 원본 데이터가 매우 엄격한 형식을 따른다고 가정합니다. 대문자로 시작하고 단 하나의 공백 만 삽입하면되는 회사 이름으로 훌륭하게 작동합니다. 이름이 이러한 매개 변수에 맞지 않으면 예상대로 작동하지 않습니다.

물론 매크로를 사용하여 공백을 삽입하면 이러한 문제를 극복 할 수 있습니다. 다음은 셀의 각 문자를 보는 간단한 접근 방식입니다. 문자가 대문자이면 문자 앞에 공백이 삽입됩니다. 매크로가 완료되면 문자열이 셀에 다시 채워집니다.

Function Add_Spaces(ByVal sText As String) As String    Dim CharNum As Long    Dim FixedText As String    Dim CharCode As Long

FixedText = Left(sText, 1)



For CharNum = 2 To Len(sText)

CharCode = Asc(Mid(sText, CharNum, 1))

If CharCode >= 65 And CharCode <= 90 Then          FixedText = FixedText & " " & Mid(sText, CharNum, 1)

Else          FixedText = FixedText & Mid(sText, CharNum, 1)

End If    Next CharNum

Add_Spaces = FixedText End Function

매크로 사용은 간단합니다. 회사 이름이 A1 셀에 있으면 다음이 사용됩니다.

=Add_Spaces(A1)

보다 간결한 접근 방식은 다음과 같이 정규식을 사용하여 대문자를 찾고 공백을 삽입하는 것입니다.

Function SplitCaps(str As String) As String     Dim objRegex As Object     Set objRegex = CreateObject("vbscript.regexp")



With objRegex         .Global = True         .Pattern = "([a-z])([A-Z])"

SplitCaps = .Replace(str, "$1 $2")

End With End Function

이 특정 매크로 기술을 사용하려면 정규식을 활성화해야합니다. VB Editor에서 Tools | 참조한 다음 사용 가능한 참조를 스크롤하여 Microsoft VBScript 정규식 5.5 옵션을 찾습니다. 참조 왼쪽의 확인란이 선택되었는지 확인한 다음 확인을 클릭합니다. 그런 다음 Add_Spaces 함수를 사용할 수있는 것과 동일한 방식으로 Excel 내에서 SplitCaps 함수를 사용할 수 있습니다.

물론 모든 접근 방식의 적합성은 작업중인 데이터의 특성에 따라 크게 달라집니다. 원래 회사 이름에 여러 개의 연속 된 대문자 (예 : “ABCCorp.”)가 포함 된 경우 출력에 “ABCCorp”와 같이 너무 많은 공백이 포함됩니다. “A B C Corp.”가됩니다. “ABC Corp.”대신. 또한 문자가 아닌 문자는 “H & M”

“H & M”이되거나 “H & M”으로 유지됩니다 (사용하는 매크로 접근 방식에 따라 다름).

이러한 이상한 회사 이름 중 일부를 극복하기 위해 여러 개의 연속적인 대문자가 있는지 확인하고 그에 따라 출력을 조정하는 다른 매크로 접근 방식을 시도 할 수 있습니다.

Sub AddSpaces()

Dim i As Integer     Dim j As Integer     Dim PriorCap As Boolean     Dim temp As String

j = 1

Do While Cells(j, 2) <> ""

Cells(j, 3) = ""

PriorCap = True         For i = 1 To Len(Cells(j, 2))

Select Case Mid(Cells(j, 2), i, 1)

Case "A" To "Z", "-"

If PriorCap = False Then                         Cells(j, 3) = Cells(j, 3) & " " & _                           Mid(Cells(j, 2), i, 1)

Else                         Cells(j, 3) = Cells(j, 3) & _                           Mid(Cells(j, 2), i, 1)

End If                     PriorCap = True                 Case Else                     Cells(j, 3) = Cells(j, 3) & _                       Mid(Cells(j, 2), i, 1)

PriorCap = False             End Select         Next i         j = j + 1     Loop End Sub

_ 참고 : _

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

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

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

이 팁 (12810)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.