이름의 처음 두 글자와 성의 처음 두 글자 결합

이름의 처음 두 글자와 성의 처음 두 글자 결합

사용자 이름 스프레드시트가 있습니다.

이름과 성은 열의 동일한 셀에 있습니다 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)

여기에 이미지 설명을 입력하세요

덕분에공식의 주요 부분에 대한 @Kyle

답변3

이것은 또 다른 방법입니다 ...

워크시트 스크린샷

  • 이름
  • 비 -=CONCATENATE(LEFT(A1,2),LEFT(RIGHT(A1,(LEN(A1)-FIND(" ",A1))),2))

답변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의 솔루션단일 이름에도 작동하도록 수정되었습니다(이 경우 결과는 이름의 처음 두 문자입니다).


메모:예쁜 공식은 입력하면 실제로 작동합니다.

관련 정보