태그 보관물: microsoft-excel-2013

microsoft-excel-2013

이름에서 처음 두 글자와 성에서 처음 두 글자를 결합 셀에 A있습니다. 이름의 첫 두 글자 (첫

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

이름과 성은 같은 열의 셀에 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결과로 나를 제공합니다 .



답변

예; 각 사람이 이름과 성만 가지고 있다고 가정하면, 이것은 항상 다음과 같이 사용할 수있는 공백으로 구분됩니다.

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

나는 당신이 제공 한 모든 가정에 대해서만이 대답을 근거로 할 수있었습니다.

또는 공백을 계속 포함하려면 다음을 수행하십시오.

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

답변

그리고 반올림하기 위해 이름의 처음 두 문자와 성의 첫 두 문자를 반환 하지만 중간 이름을 설명 하는 솔루션이 있습니다.

=LEFT(A1,2)&LEFT(MID(A1,FIND("~~~~~",SUBSTITUTE(A1," ","~~~~~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)),2)

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


답변

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

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

답변

우선, PeterH의 대답 이 가장 간단하고 이해하기 쉽다고 말하고 싶습니다 . (내 선호는 RSI를 피하는 데 도움이되는 두 개의 적은 문자를 입력 하는 FIND()대신 사용 하는 것이지만 SEARCH();-))

MID(), LEFT()또는을 사용 하지 않고 이름의 원하지 않는 부분을 제거하는 RIGHT()데 사용하는 대체 대답 REPLACE()은 다음과 같습니다.

=REPLACE(REPLACE(A1,FIND(" ",A1)+3,LEN(A1),""),3,FIND(" ",A1)-2,"")

설명:

내부 REPLACE(A1, FIND(" ",A1)+3, LEN(A1), "")는 성의 세 번째 문자부터 문자를 제거하고 외부 는 첫 번째 이름의 세 번째 문자에서 공백을 포함하여 문자를 제거합니다.REPLACE(inner_replace, 3, FIND(" ",A1)-2, "")


부록 1 :

위의 공식은 단일 중간 이름을 허용하도록 조정할 수도 있습니다.

=REPLACE(REPLACE(A1,IFERROR(FIND(" ",A1,FIND(" ",A1)+1),FIND(" ",A1))+3,LEN(A1),""),3,IFERROR(FIND(" ",A1,FIND(" ",A1)+1),FIND(" ",A1))-2,"")

대체하여 FIND(" ",A1)함께 IFERROR(FIND(" ",A1,FIND(" ",A1)+1), FIND(" ",A1)).

FIND(" ", A1, FIND(" ",A1)+1)두 번째 공백을 찾거나 (첫 번째 공백 이후 공백 검색을 시작하여) 그렇지 않으면 오류가 발생합니다. 두 번째 공백이 없으면 첫 번째 공백을 찾습니다.
IFERROR(find_second_space, FIND(" ",A1))

이 긴 버전은 여러 개의 중간 이름을 허용합니다.

=REPLACE(REPLACE(A1,FIND("§",SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+3,LEN(A1),""),3,FIND("§",SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-2,"")

이 경우 FIND(" ",A1)에는로 대체됩니다 FIND("§", SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))).

LEN(A1)-LEN(SUBSTITUTE(A1," ",""))공백 수를 계산합니다. 마지막 공백을로 바꿉니다 . 마지막 공간을 찾는 것과 동일한 첫 번째 를 찾습니다 .
SUBSTITUTE(A1, " ", "§", count_of_spaces)§
FIND("§", last_space_replaced_string)§

( §물론, 전체 이름 문자열에 존재하지 않는 문자로 대체 될 수 있습니다 CHAR(1). 더 일반적이고 안전한 대안은을 사용하는 것 입니다.)

물론 BruceWayne의 답변 은 여러 개의 중간 이름을 허용하는 가장 간단하고 이해하기 쉬운 솔루션입니다. 잘했다. 다른 답변을 게시 할 때까지는 ;-)입니다.


부록 2 :

모든 솔루션은 다음 IFERROR()과 같이 함수 내에 래핑하여 단일 이름의 경우에만 적용 할 수 있습니다 (4 개의 문자 결과가 필요한 경우) .

=IFERROR(solution, alternate_formula)

위의 일반적인 경우는 공식이며 특정 솔루션을보다 효율적으로 수정할 수 있습니다. 예를 들어, 단일 이름의 경우 첫 두 글자를 마지막 두 글자와 결합해야하는 경우 PeterH의 답변 을 다음과 같이보다 효율적으로 조정할 수 있습니다.

=LEFT(A1,2)&MID(A1,IFERROR(SEARCH(" ",A1)+1,LEN(A1)-1),2)

단일 문자 이름 또는 이니셜 (공백 또는 점은 두 번째 문자로 허용되지 않는다고 가정)을 허용하기 위해 다음과 같은 솔루션을 사용할 수 있습니다.

=SUBSTITUTE(SUBSTITUTE(solution, " ", single_char), ".", single_char))

단일 문자는 이름으로 하드 코딩되거나 계산 될 수 있습니다. 또는 ""공백이나 점을 제거하는 데 사용 하십시오.

당신이 경우 마지막으로, 정말 전체 이름이 단일 문자 인 경우에 대한 수용에 필요한 전용 (!), 단지 공식과 전용 단일 이름을 바꿈 다른 IFERROR() . (물론, 대체 공식이 그 특별한 경우를 처리하지 않는다고 가정하십시오.)


부록 3 :

마지막으로 (no, really * ;-)) 여러 연속 및 / 또는 선행 / 후행 공백을 수용하려면 TRIM(A1)대신을 사용하십시오 A1.

* 나는 T 씨와 같은 한 글자 성의 경우를 독자들을위한 연습으로 남겨 둘 것이다.

힌트: =solution &IF(MID(A1,LEN(A1)-1,1)=" ", single_char, "")


답변

이 답변을 바탕으로 여러 중간 이름으로 작동하는 우아한 솔루션이 있습니다.

=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의 솔루션입니다 (이 경우 결과는 이름의 처음 두 문자에 불과 함).

참고 : 사전 수식은 실제로 입력 한 경우 작동합니다.


답변