셀 범위 내에서 대소 문자를 구분하지 않는 텍스트 문자열 찾기


3

Excel에서 해결해야 할 약간의 문제가 있으며 해결 방법을 잘 모르겠습니다. 온라인에서 몇 가지 검색을 수행했는데 실제로 유용한 수식을 찾지 못했습니다. 상황은 다음과 같습니다 (이 질문의 목적을 위해 약간 단순화되었습니다).

AE 열에 데이터가 있습니다. A와 B의 셀 데이터를 CE의 데이터와 일치시키고 TRUE 또는 FALSE를 F 열에 반환해야합니다.

다음과 같은 경우 TRUE를 반환합니다.
-A의 문자열이 CE의 모든 문자열에서 발견됩니다.
OR
-B의 문자열은 CE의 모든 문자열 내에 있습니다.

그렇지 않으면 FALSE를 반환하십시오.

문자열은 범위 내의 전체 또는 부분 문자열과 정확히 일치해야하지만 일치하는 함수는 대소 문자를 구분하지 않아야합니다. 참고 용 예제 시트의 스크린 샷을 만들었습니다.

여기에 이미지 설명을 입력하십시오

나는 IF를 사용하거나 수식의 가장 바깥층에 사용해야하며 아마도 OR이 필요할 것이라고 확신합니다. 그런 다음 OR에 대한 인수의 경우 IFERROR를 사용해야 할 것으로 예상됩니다. 그러나 내가 잃어버린 것은 텍스트 문자열 검색을 처리하는 데 가장 효율적으로 사용할 수있는 기능입니다.

VLOOKUP은 이와 관련하여 매우 제한적이라고 생각합니다. 수 있습니다 전체 문자열 비교에 대해 전체 문자열을 할 채굴 할 수 있지만 나는 부분 문자열 일치에 대한 정확한 결과를 반환하지 않습니다 확신한다. 찾기 및 검색은 단일 대상 검색으로 만 제한되며 대소 ​​문자를 구분합니다. 검색에서 대소 문자를 구분하지 않으려면 UPPER 또는 LOWER을 사용할 수 있지만 여전히 정확한 부분 일치 수행하고 지정된 범위 의 셀을 검색 할 수있는 것이 필요합니다 .

여기서 작동 할 수있는 기능 또는 기능 조합이 있습니까?

이상적으로는 직선 Excel 수식 으로이 작업을 수행하고 싶습니다. VBScript 또는 이와 유사한 도구에 전혀 익숙하지 않으며이 프로젝트에 대해 배울 시간이 없습니다.

답변:


2

이것은 내 더러운 해결책입니다. 최고의 방법인지 잘 모르겠습니다.

임시 열을 추가하려고하면 나중에 숨길 수 있습니다. 모든 데이터를 소문자 또는 대문자로 변환 한 다음 이미 수행 한 논리를 따르십시오.

이처럼 :

A2: ABcdeF
B2: =lower(A2) --> abcdef
C2: aBc
D2: =lower(C2) --> abc
E2: =find(D2, B2) --> found
F2: =find('poi', B2) --> not found

VLOOKUP 함수에는 선택적 매개 변수가 있습니다. range_lookup

VLOOKUP이 lookup_value와 정확히 일치하는지 대략적으로 일치 하는지를 나타내는 논리 값 (TRUE 또는 FALSE 만 해당)

http://spreadsheets.about.com/od/excelfunctions/ss/vlookup_2.htm


내가 전에 TRUE 및 FALSE 값 VLOOKUP을 실행하고 "대략 일치"로 찾은 방법 끕니다. 나는 그들이 "대략적인"이라는 용어의 진정한 의미를 사용하고 있다고 생각 합니다.
Iszi

이것은 나의 속임수입니다. 제발 알려주십시오. 이 글에서 다른 답변을 읽어주세요
Truong Ha

0

해당 셀 텍스트를 결합하려고하면 이것이 내 트릭입니다.

A1: a
A2: b
A3: c
B1: ">" & A1 & "<" --> >a<
B2: = B1 & ">" & A2 & "<" --> >a<>b<
B3: = B2 & "<" & A3 & "<" --> >a<>b<>c<

... Excel을 사용하여 자동화 할 수 있습니다 .1 분 미만이 소요된다고 생각하십시오 :-)

마지막 셀은 모든 셀의 모든 텍스트를 결합해야합니다

그런 다음 일반적인 검색을 수행하지만 ">"및 "<"를 기준에 포함시켜야합니다.

=find(">" & "abc" & "<", $B$3)

그리고 다시 그것은 내 더러운 속임수입니다!


재미있는 생각. 그래도 Excel로 이것을 "자동화"하는 방법은 무엇입니까? 처리 할 약 900 개의 행이 있습니다.
Iszi

죄송합니다. B3을 아래로 드래그하면 수식이 자동으로 복사되고 다른 셀이 업데이트됩니다. 또는 마우스로 B3 셀의 오른쪽 하단 모서리를 가리키고 두 번 클릭 할 수도 있습니다 (마우스 커서가 십자형 + 방향으로
바뀌어야 함

0

이상적으로는 직선 Excel 수식 으로이 작업을 수행하고 싶습니다. VBScript 또는 이와 유사한 도구에 전혀 익숙하지 않으며이 프로젝트에 대해 배울 시간이 없습니다.

VBA의 Range.Find 메서드는 이러한 작업에 대해서만 존재합니다. 그것을 사용하지 않는 것은 부끄러운 일입니다. :)

통사론

Range .Find ( What , After, LookIn, LookAt , SearchOrder, SearchDirection, MatchCase , MatchByte, SearchFormat)

우리는 당신의 작업을 위해 3 개의 매개 변수 만 필요합니다. 나머지는 놔둬

  • 범위 : 검색 할 범위
  • 무엇 : 검색 할 데이터
  • LookAt : 하나의 xlWhole (완전 일치) 또는 xlPart (부분 일치) 일 수 있습니다.
  • MatchCase : 검색 대소 문자를 구분하려면 True입니다. 대소 문자를 구분하지 않는 검색의 경우 거짓

간단한 예는 다음과 같습니다

 Set result = Columns(C:E).find(what:=[A1], LookAt:=xlPart, MatchCase:=false)

이 코드는 다음과 같은 추가 조건을 존중합니다.

  • 열 A 열 B의 데이터를 확인하십시오 . 둘 중 하나가 일치하면 true를 리턴하십시오.
  • 부분적으로 일치하는 경우에도 true를 반환
  • 대문자 또는 소문자 무시
  • F 열에 true 또는 false 를 반환
Sub SearchMatches()    
For i = 2 To 5    
    On Error Resume Next
    Set checkColA = Columns("C:E").Find(Cells(i, 1), , , xlPart, , , False)
    Set checkColB = Columns("C:E").Find(Cells(i, 2), , , xlPart, , , False)
    On Error GoTo 0        
    If checkColA Is Nothing And checkColB Is Nothing Then
        Cells(i, 6) = False
    Else
        Cells(i, 6) = True
    End If        
Next i    
End Sub

여기에 이미지 설명을 입력하십시오


나는이 질문이 3 살이라는 것을 알고 있지만, 아마도 다른 사람들도이 정보를 유용하게 사용할 것입니다.
nixda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.