셀에 하위 문자열이 포함되어 있는지 확인


229

셀에 주어진 문자 / 하위 문자열이 포함되어 있는지 확인하는 내장 함수가 있습니까?

구분 문자가 없을 때 오류를 발생시키지 않고 조건부로 Left/ Right/ 와 같은 텍스트 함수를 적용 할 수 있음을 의미합니다 Mid.

답변:


374

이것을 사용해보십시오 :

=ISNUMBER(SEARCH("Some Text", A3))

TRUE셀에 A3가 포함되어 있으면 반환 됩니다 Some Text.


7
교활한! 고마워 gwin003 :) 나는 여전히 더 직관적 인 기능이 없다는 것에 약간 놀랐습니다.
지리학

18
네 동의 CONTAINS("Text", cell)합니다. 기능 이 있다면 좋을 것 입니다.
gwin003

20
이 i는 대소 문자를 구분하지 않으며, 대소 문자를 일치 시키려면 다음 FIND()대신 사용해야합니다 .SEARCH()
Code Jockey

7
,대신에 오류가 발생했습니다 ;. 제공된 수식을 변경 한 후 =ISNUMBER(SEARCH("Some Text"; A3))작동했습니다. 감사!
renatov

6
실제로 OS 의 로케일 에 따라 달라지는 @renatov ; 특히 "목록 구분 기호"에 사용되는 문자입니다.
pepoluan

22

다음 수식은 CCHE 셀에 "CHECK"텍스트가 나타나는지 여부를 결정합니다. 그렇지 않으면 결과가 공백입니다. 그렇다면 결과는 "CHECK"작업입니다.

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")

줄 시작 부분에 4 개의 공백이나 탭을 사용하여 코드 블록을 강조 표시 할 수 있습니다.
NiematojakTomasz

@Steve, 감사합니다;)
Dimitri

12

이 공식은 나에게 더 직관적 인 것 같습니다.

=SUBSTITUTE(A1,"SomeText","") <> A1

"SomeText"가 A1에 포함 된 경우 TRUE를 리턴합니다.

다른 답변에 언급 된 IsNumber / Search 및 IsError / Find 수식은 확실히 작동하지만 항상 도움말을 보거나 Excel에서 너무 자주 실험을 수행해야 할 필요가 있습니다.


12

IF 문 내에서 단일 함수를 사용 하여이 작업을 수행하려는 사람들을 위해

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)

하위 문자열 TEXT가 A1 셀에 있는지 확인

[참고 : 텍스트 주위에 별표가 있어야합니다.]


그것은 작동하지만, COUNTIF 식의 사용은, 파일이 응답하지 않는 거대한 데이터를 만드는 경우에도 파일 크기가 큰된다
Gaurravs

8

FIND()Excel 에서 기능을 확인하십시오 .

통사론:

FIND( substring, string, [start_position])

#VALUE!하위 문자열을 찾지 못하면 반환 합니다.


그렇습니다 ISNUMBER. 대소 문자 구분이 일치하는 경우에만 중첩 됩니다.
geotheory

1

나는 Rink.Attendant.6 답변을 좋아한다. 실제로 여러 문자열을 확인하고 다음과 같이했습니다.

먼저 상황 : 주택 건설업자 또는 커뮤니티 이름이 될 수있는 이름이며 건축업자를 하나의 그룹으로 묶어야합니다. 이를 위해 "builder"또는 "construction"등의 단어를 찾고 있습니다.

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")

SO에 오신 것을 환영합니다. 좋은 답변이 무엇인지 읽어보십시오 .
geotheory

이것이 무엇을 의미하는지 이해하지 못합니다. 아마도 한 번 충분하면 빌더를 두 번 확인합니다. 빌더를 찾으면 빌더를 리턴하고 그렇지 않으면 커뮤니티를 리턴합니다. 단어 구성은 어디에도 나타나지 않습니다. 아마도 같은 것 =OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*construction*"))입니까?
환상의

COUNTIFS:COUNTIFS(A1,"*builder*",A1,"*construction*")
vstepaniuk는

1

오래된 질문이지만 여전히 유효하다고 생각합니다.

CONTAINS 함수가 없으므로 VBA에서 선언하지 않는 이유는 무엇입니까? 아래 코드는 문자열에서 하위 문자열을 찾는 VBA Instr 함수를 사용합니다. 문자열을 찾지 못하면 0을 반환합니다.

Public Function CONTAINS(TextString As String, SubString As String) As Integer
    CONTAINS = InStr(1, TextString, SubString)
End Function

개인의 효율성을 향상시키는 좋은 방법이지만 재현성의 비용으로 말하고 싶습니다 :)
지리학

0

이것은 오래된 질문이지만 Excel 2016 이상을 사용하는 사람들을위한 해결책은 새로운 IFS( condition1, return1 [,condition2, return2] ...)조건 을 사용하여 중첩 된 if 구조의 필요성을 제거 할 수 있다는 것입니다 .

나는이 질문의 경우 그것을 사용하는 방법에 대해 시각적으로 명확하게 보이도록 형식을 지정했습니다.

=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)

SEARCH문자열을 찾을 수 없으면 오류를 반환 하므로 ISERROR(...)=FALSE진리를 확인하기 위해 래핑하여 원하는 값을 반환합니다. SEARCH가독성에 대한 오류 대신 0을 반환 하면 좋을지 모르지만 불행히도 작동합니다.

중요한 또 다른 메모 IFS는 먼저 찾은 일치 항목을 반환하므로 순서가 중요하다는 것입니다. 예를 들어 내 문자열 인 경우 Surf, Surfing, SurfsString1,String2,String3 위 내 세포의 문자열이었다 Surfing그것 때문에 문자열 존재의 두 번째 대신 첫 번째 항에 일치합니다 Surf. 따라서 공통 분모는 목록에서 마지막이어야합니다. 내는 IFS주문 될 필요가 Surfing, Surfs, Surf제대로 작동하려면 (교환 SurfingSurfs간단한 예제에서 작업 또한 것),하지만 Surf마지막이 될 필요가있다.


대부분은 if / else 능력, 즉 기본값을 원할 것입니다. 이 인용 부호를 추가하면 다음과 같이 대답의 호소력이 넓어 질 수 있습니다. "모든 테스트가 FALSE를 반환하는 경우 기본값을 설정할 수있는 방법이 없습니다 (예 : false 인 경우 값). 대신 마지막 테스트에 TRUE를 입력 한 다음 값을 FALSE 인 경우의 기본값 "
whitneyland

-3

여기 내가 사용하는 공식이 있습니다.

=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )


"."인지 확인합니다. 는 A1에 포함되어 있으며 "1"로 시작하는 A1에 남아있는 문자 수를 반환합니다. 추가 계산이 여기에서 관련이 있는지 확실하지 않습니다.
Grade 'Eh'Bacon

최소한, 사용IFERROR(LEN(A1) - FIND(".", A1), 0)
Nigel Touch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.