대문자 앞에 공백 추가 (Microsoft Excel)
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에 적용됩니다.