Rajeev는 일련의 단어의 첫 글자를 추출하는 공식이 필요합니다. 예를 들어, 셀에 “Rajeev Kumar Pandey”라는 텍스트가 포함 된 경우 그는 “RKP”라는 문자를 다른 셀로 추출하려고합니다.

시리즈의 단어 수는 셀마다 다를 수 있습니다.

이 작업에 접근 할 수있는 몇 가지 방법이 있습니다. 우선 중간 열을 추가하여 워크 시트의 구조를 수정하지 않는 것으로 가정합니다. 이 가정은 또한 원본 문자열을 개별 단어로 분할하기 위해 텍스트를 열로 기능을 사용하는 것을 배제합니다.

문제의 핵심은 수식이 원래 문자열에서 공백이있는 위치를 확인할 수 있는지 확인하는 것입니다. 다음과 같은 공식이 작업을 수행 할 것이라고 생각할 수 있습니다.

=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)

이 공식은 부분적으로 작동합니다. 원래 문자열에 세 단어를 구분하는 두 개의 공백이 있으면 제대로 작동합니다. 단어가 더 적 으면 수식이 오류를 반환합니다. 더 많은 단어가 있으면 처음 세 단어의 첫 글자 만 반환합니다 (세 번째 단어 이후의 모든 단어는 무시 함).

즉, 수식은 공백을 확인할뿐만 아니라 공백이 없거나 너무 적은 경우 오류를 처리해야합니다. 오류 검사는 공식이 훨씬 길어짐을 의미합니다.

=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1, SEARCH(" ",A1)+1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1))

이 공식은 문자열에서 0-4 단어 사이의 모든 것을 적절하게 처리합니다. 또한 문자열이 공백으로 시작하거나 끝나지 않으며 단어 사이에 여러 개의 공백이 포함되지 않는다고 가정합니다. 많은 수의 단어 또는 기타 잠재적 인 합병증 (예 : 단어 사이의 공백 수)을 처리하려면 사용자 정의 함수를 사용하는 것이 가장 좋습니다.

사용자 정의 함수가 문자열의 단어에서 선행 문자를 가져올 수있는 방법에는 여러 가지가 있습니다. 사실, 나는 똑같은 것을 성취하는 몇 가지 변형을 받았습니다. 그러나 다음 예제는 아마도 내가 만난 가장 간결한 코드 일 것입니다.

Function Initials1(Raw As String) As String     Dim Temp As Variant     Dim J As Integer

Application.Volatile     Temp = Split(Trim(Raw))



For J = 0 To UBound(Temp)

Initials1 = Initials1 & Left(Temp(J), 1)

Next J End Function

이 코드는 Excel 2000부터 시작하는 모든 버전의 VBA에서 작동합니다. Split 함수는 문자열 내에서 공백이 발생하는 위치를 기준으로 문자열을 “분리”합니다. 문자열의 개별 단어는 배열 (이 경우 Temp)에 배치되어 개별 단어에 액세스 할 수 있습니다. 워크 시트에서 함수를 사용하려면 다음과 같이 사용하면됩니다.

=Initials1(A1)

Split 기능을 지원하지 않는 Excel 버전을 사용하는 경우 다음 코드도 잘 작동합니다.

Function Initials2(Raw As String)

Dim p As Integer

Application.Volatile     Initials2 = ""

p = 0     Do         Initials2 = Trim(Initials2) & Mid(Raw, p + 1, 1)

p = InStr(p + 1, Raw, " ")

Loop Until p = 0 End Function

_ 참고 : _

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

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

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

이 팁 (8661)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excelribbon-Pulling_Initial_Letters_from_a_String [문자열에서 초기 문자 가져 오기].