문자열에서 Excel 추출 부분 문자열


22

문자열에서 가변 길이 하위 문자열을 추출하는 방법을 찾고 있습니다.

내 세포는 다음과 같습니다.

ABC - DEF
ABCDE - DEF
ABCD - ABC

캐릭터에서 문자열을 나누고 싶으 -므로 셀이 다음과 같이됩니다.

ABC
ABCDE
ABCD

이것은 VBScript가 아닌 수식으로 수행해야합니다.

Excel 2010을 사용하고 있습니다

편집하다

데이터 세트에 항상 -문자가 포함되어 있지는 않으므로 변경 사항이 없어야합니다.

답변:


26

이 문제는 두 단계로 나눌 수 있습니다.

  1. 원하는 분할 문자 (이 경우 "-"또는 " - ") 의 문자열에서 색인을 찾으십시오 .
  2. 원본 텍스트의 시작 부분에서 접두사 인덱스까지 접두사 하위 문자열을 가져옵니다.

FIND하고 SEARCH각각의 주어진 인덱스 반환 명령 needle(A)에은 haystack( FIND대소 문자를 구분, SEARCH대소 문자 구별이며 와일드 카드를 허용). 이를 감안하면 다음과 같은 이점이 있습니다.

FIND(search_text, source_cell, start_index)

또는이 경우 :

FIND(" - ", A1, 1)

일단 인덱스가 있으면 source_cell"분할" 을 하기 위해 접두사가 필요합니다 . MID그냥 그렇게 :

MID(source_cell, start_index, num_characters)

두 가지를 모두 합하면 다음과 같은 이점이 있습니다.

=MID(A1,1,FIND(" - ",A1,1))

ABC - DEFgives의 텍스트를 갖는 A1 ABC.


7

편집을 기반으로 Andrew의 답변을 확장 : 분할 할 문자열을 찾기 위해 FIND함수를 사용하고 있습니다. (가) 경우 FIND주어진 문자열을 찾는 데 실패, 그것은 반환 #VALUE?오류가 발생했습니다. 따라서이 값을 확인하고 대체 값을 사용해야합니다.

를 포함한 오류 값을 확인하기 위해 함수를 #VALUE사용합니다 ISERROR.

=ISERROR(FIND(" - ", A1, 1))

FIND함수가 A1 셀에서 "-"문자열을 찾을 수 없으면 사실 입니다. 따라서 우리는 이것을 사용하여 사용할 값을 결정합니다.

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

즉, find 명령이 오류를 반환하면 수정되지 않은 A1 셀을 사용하십시오. 그렇지 않으면 MIDAndrew가 이미 제공 한 기능을 수행하십시오 .


2

귀하의 답변에 대한 @AndrewColeson 감사합니다.

추가하기 위해의 오른쪽에있는 모든 것을 원한다면 -이 코드를 사용하십시오.

= MID (A1, LEN (B1) + 3, LEN (A1))

어느 것이 :

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

이 코드는 다음에 정의되지 않은 수의 문자가있는 경우 유용합니다 -.

예를 들어 :

당신이 가지고 있다면:

ABC - DEFG
AB - CDEFGH
...

이것은 또한 =MID(a1,FIND("-",a1)+1,LEN(a1))"세포 외"참조없이 속임수
Mikey

1

다음은 Excel의 텍스트 문자열에서 왼쪽에서 다섯 번째 문자를 추출하는 매우 간단한 방법입니다.

문자열 ABCDEFGHIJ이 Excel 스프레드 시트의 A1 셀에 저장된 다음 다음 공식을 가정하십시오.

=RIGHT(LEFT(A1,5),1)

문자열의 왼쪽부터 5 번째 문자, 즉를 생성합니다 E.


( MIDExcel 에는 기능이 없습니까? 레거시 Visual Basic에 존재한다고 확신합니다. =MID(A1, 5, 1))
Valmiky Arquissandas

0

다음 공식은 하위 문자열을 제거합니다. [TEXTCOLUMN_1]

예를 들면 : 당신은 변환 할 경우 -./thumb/hello.jpgthumb/hello.jpg다음 공식을 사용하여

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1]= 변경하려는 열 이름 [NUM_OF_CHARACTERS]= 왼쪽에서 제거하려는 문자 수

오른쪽에서 제거하려면 다음을 사용하십시오.

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.