
사용자 이름 스프레드시트가 있습니다.
이름과 성은 열의 동일한 셀에 있습니다 A
.
이름의 처음 두 글자(첫 번째 단어)와 성의 처음 두 글자(두 번째 단어)를 연결하는 수식이 있습니까?
예를 들어 John Doe
는 가 되어야 합니다 JoDo
.
나는 노력했다
=LEFT(A1)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,IFERROR(FIND(" ",SUBSTITUTE(A1," ","",1)),LEN(A1))-IFERROR(FIND(" ",A1),LEN(A1)))
그러나 이것은 나에게 JoDoe
결과를 제공합니다.
답변1
예; 각 사람이 이름과 성만 가지고 있다고 가정하고 이는 항상 아래에서 사용할 수 있는 공백으로 구분됩니다.
=LEFT(A1,2)&MID(A1,SEARCH(" ",A1)+1,2)
이 답변은 귀하가 제공한 전부이므로 해당 가정에만 근거할 수 있습니다.
또는 공간을 계속 포함하려는 경우:
=LEFT(A1,2)&" "&MID(A1,SEARCH(" ",A1)+1,2)
답변2
마무리로 이름의 처음 두 문자와 성의 처음 두 문자를 반환하는 솔루션은 다음과 같습니다.하지만중간 이름도 설명합니다.
=LEFT(A1,2)&LEFT(MID(A1,FIND("~~~~~",SUBSTITUTE(A1," ","~~~~~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)),2)
답변3
답변4
기반이 답변, 다음은 원하는 수의 중간 이름으로 작동하는 우아한 솔루션입니다.
=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)
설명:
SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))
단어 간 공백을 전체 문자열 길이와 동일한 수의 공백으로 바꿉니다. 임의로 큰 숫자가 아닌 문자열 길이를 사용하면 공식이 모든 길이의 문자열에 대해 작동하고 효율적으로 작동함을 의미합니다.
RIGHT(space_expanded_string, LEN(A1))
공백이 앞에 붙은 가장 오른쪽 단어를 추출합니다. *
TRIM(space_prepended_rightmost_word)
가장 오른쪽 단어를 추출합니다.
LEFT(rightmost_word, 2)
가장 오른쪽 단어(성)의 처음 두 문자를 추출합니다.
SUBSTITUTE()
*주의사항: 사용자 이름에 후행 공백이 포함될 수 있는 경우 의 첫 번째 인수 (예: ) 를 A1
로 바꿔야 합니다 TRIM(A1)
. 선행 공백과 단어 사이의 여러 연속 공백은 를 사용하여 올바르게 처리됩니다 A1
.
시도 수정
시도한 솔루션을 자세히 살펴보면 첫 번째 단어(예: 이름)의 처음 두 글자와 이름의 처음 두 글자를 연결하는 작업 공식에 매우 가까운 것 같습니다.두번째존재한다면 말입니다.
사용자 이름에 중간 이름이 포함된 경우 수정된 수식은 성 대신 첫 번째 중간 이름에서 처음 두 글자를 잘못 가져옵니다(실제로 성에서 추출하려는 의도로 가정).
또한 모든 사용자 이름이 이름 또는 이름과 성으로만 구성된 경우 공식은 불필요하게 복잡해지고 단순화될 수 있습니다.
수식이 어떻게 작동하는지 확인하고 수정하려면 다음과 같이 수정하면 더 쉽습니다.
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
)
작동 방식을 이해하려면 먼저 A1
공백이 포함되지 않은 경우(예: 단일 이름만 포함된 경우) 어떤 일이 발생하는지 살펴보세요. 검색 문자열이 대상 문자열에서 발견되지 않으면 오류를 반환 하므로 모든 IFERROR()
함수는 두 번째 인수로 평가됩니다 .FIND()
#VALUE!
=
LEFT(A1,2) &
MID(
A1,
LEN(A1) + 1,
LEN(A1)
-LEN(A1)
)
의 세 번째 인수는 MID()
0으로 평가되므로 함수가 출력되고 ""
수식 결과는 단일 이름의 처음 두 문자입니다.
이제 정확히 두 개의 이름이 있는 경우(즉, 정확히 하나의 공백이 있는 경우)를 살펴보세요. 첫 번째와 세 번째 IFERROR()
함수는 첫 번째 인수로 평가되지만 두 번째 함수는 FIND(" ", SUBSTITUTE(A1," ","",1))
첫 번째이자 유일한 공백을 제거한 후 다른 공백을 찾으려고 시도하므로 두 번째 인수로 평가됩니다.
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
LEN(A1)
- FIND(" ",A1)
)
분명히 MID()
두 번째 단어(예: 성)를 전체적으로 반환하고 수식 결과는 이름의 처음 두 문자와 그 뒤에 오는 문자입니다.모두성의 문자.
완전성을 기하기 위해 이름이 세 개 이상인 경우도 살펴보겠습니다. 이제 공식을 수정하는 방법이 상당히 분명해졌습니다. 이번에는 모든 IFERROR()
함수가 첫 번째 인수로 평가됩니다.
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
FIND(" ", SUBSTITUTE(A1," ","",1))
- FIND(" ",A1)
)
이전 사례보다 약간 덜 명확하지만 MID()
전체 내용을 정확하게 반환합니다.두번째단어(예: 이름 중간 이름). 따라서 수식 결과는 이름의 처음 두 문자 뒤에 첫 번째 중간 이름의 모든 문자가 오는 것입니다.
분명히 수정 사항은 출력 LEFT()
의 처음 두 문자를 얻는 데 사용하는 것입니다 MID()
.
=
LEFT(A1,2) &
LEFT(
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
),
2
)
위에서 언급한 단순화는 다음 LEFT(MID(…,…,…), 2)
으로 바꾸는 것입니다 MID(…,…,2)
.
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
2
)
또는 한 줄에:
=LEFT(A1,2)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,2)
이는 본질적으로PeterH의 솔루션단일 이름에도 작동하도록 수정되었습니다(이 경우 결과는 이름의 처음 두 문자입니다).
메모:예쁜 공식은 입력하면 실제로 작동합니다.