Excel에서 특정 패턴을 검색하는 수식 찾기


-1

나는 특정한 문자 패턴을 가진 "단어"를 검색하기위한 공식을 찾고있다. INNSA1 또는 INMAA4 또는 INPTPB어디서부터 시작하니? IN 끝으로 4, 1, 6, 또는 B. 단어는 항상 정확히 6 자이며 글자는 대문자 또는 소문자 일 수 있습니다.

Excel 셀 모음에는 각각 하나 이상의 단어가 검색되는 문장이 포함됩니다 (항상 적어도 하나). 예 :

  • 내 맞춤 위치는 INNSA1입니다.
  • 나는 INMAA4에서 일한다.
  • 나는 INDEL6에 가고 싶다.
  • INNSAB 위치

단어 (또는 단어가 둘 이상인 경우)는 문장의 어느 위치 에나있을 수 있습니다. 대상 단어는 항상 별도의 단어가되며 큰 단어의 일부가 아닙니다.

각 문장 (즉, 셀)에 대해 설명 된 문자 패턴에 맞는 단어가 있는지 검색하여이 단어를 값으로 반환하고 싶습니다.


2
전성기에 외치는 많은 표결. 강력하게 추천합니다.
Michael Harvey

나는 정말로 당신의 요구 사항에 대한 명확한 그림을 가지고 있지 않습니다. '단어'(즉 영숫자 - 문자 / 숫자 만 포함하고 공백이나 다른 종류의 문자는 포함하지 않는 문자열)의 존재 여부 (진위 / 허위)를 찾고 있습니까, 패턴과 일치하는지 IN,로 끝나고 4, 1, 6, 또는 b )는 "문장"의 어느 위치 에나있을 수 있지만 단 하나의 셀에 포함 된 공백이나 구두점으로 구분됩니다. 항상 별개의 "단어"입니까, 아니면 더 긴 "단어"에 포함 된 문자열 일 수 있습니까? (계속)
fixer1234

항상 정확히 6 자입니까? 글자는 항상 대문자입니까? "문장"은 어떻게 생겼습니까? 더 큰 단어의 일부를 포함하여 "단어"가 두 번 이상 나타날 수 있습니까? 조건의 범위를 나타내는 문장의 예를 포함 시키면 이해하기가 더 쉬울 것입니다.
fixer1234

또한 게리의 학생이 해석 할 때 단어는 셀의 유일한 것입니까 아니면 셀의 다른 텍스트의 어딘가입니까 (매우 다른 요구 사항입니까)?
fixer1234

셀의 문장에서 특정 패턴을 검색하고 싶습니다. 예 : "내 맞춤 위치는 INNSA1입니다"또는 "INMAA4에서 일하고 있습니다"또는 "INDEL6에 가고 싶습니다"
ajit maurya

답변:


0

이것은 스키마에 적용 할 수있는 예입니다.

출처 : A2 A26 ,에서 B2 들어가다:

=IF(AND(LEFT(A2,2)="IN",OR(RIGHT(A2,1)="B",RIGHT(A2,1)="1",RIGHT(A2,1)="4",RIGHT(A2,1)="6")),1+MAX($B$1:B1),"")

아래로 복사 :

enter image description here

보시다시피, "좋은"데이터의 각 항목에는 간단한 순차 색인이 표시됩니다.


0

문제의 각 부분을 수행하는 방법은 여러 가지가 있지만 요구 사항의 조합은 간단하고 간단한 방법 하나 또는 VBA 솔루션을 나타냅니다. VBA가 아닌 솔루션은 도우미 열을 사용합니다. 문장 수와 가능한 결과 수, 결과를 필요로하고 사용 방법 등 다른 요인과 마찬가지로 스프레드 시트의 레이아웃도 알 수 없습니다. 따라서이 답변은 특정 솔루션보다 일반적인 지침이 될 것입니다.

함수를 사용하면 하나 이상의 대상에 대한 문장을 검색하는 것이 복잡해집니다. 더 간단한 접근법은 문장을 단어로 분해 한 다음 단어를 확인하는 것입니다. 문장을 구문 분석하는 간단한 방법은 내장 된 텍스트를 열로 변환 마법사를 사용하는 것입니다.

문장이 A 열에 있다고 가정하고 결과에 대해 다음 몇 개의 열을 비워 두십시오. 이렇게하면 결과는 항상 알려진 위치에 있고 데이터 옆에 표시됩니다. 최대 값은 2로 가정하므로 B와 C 열에는 결과 값이 포함됩니다.

문장 내에있을 수있는 최대 단어 수를 그림으로 그 다음에 많은 헬퍼 열을 예약하십시오. 이것들은 각 단어를 시험하는데 사용됩니다. 다섯 단어를 허용한다고합시다. 열 D : H는 각각 열 I : M을 가리키는 수식을 포함합니다.

행 2가 첫 번째 데이터 행이라고 가정하면 첫 번째 수식은 D2에 있고 I2를 가리 킵니다. 수식은 Gary의 학생이 제안한 것과 유사합니다.

=IF(AND(LEFT(I2,2)="IN",OR(RIGHT(I2,1)="B",RIGHT(I2,1)="1",RIGHT(I2,1)="4",RIGHT(I2,1)="6")),1,0)

대체 수식은 다음과 같습니다.

=IFERROR((LEFT(I2,2)="IN")*(SEARCH(RIGHT(I2,1)," 416b")>1),0)

목표 단어가 패턴에 적합한 지 여부를 알려주는 방법에 대한 몇 가지 아이디어 만 제공합니다. 두 번째 수식은 SEARCH (대소 문자를 구분하지 않으므로)를 사용하여 마지막 문자가 목록에 있는지 확인합니다. 처음 두 문자 테스트 IN, 그리고 마지막 문자, 각 결과가 True 또는 False로 처리되며 Excel에서 다음과 같이 처리됩니다. 10로 나타났다. 두 테스트가 모두 true이면 결과는 다음과 같습니다. 1, 그렇지 않으면 0.

SEARCH 표현식에서 공백으로 시작하여 & gt; 1의 결과를 테스트합니다. 내가 이것을 한 이유는 MS Office Online을 사용하여 테스트했기 때문이며 빈 셀의 가장 오른쪽 문자가 테스트 문자열의 1 위 자리에 있다고 생각하기 때문입니다.

SEARCH가 일치 항목을 찾지 못하면 오류를 반환하므로 IFERROR에 수식을 래핑하면 일치하지 않는 단어가 0.

따라서 두 공식 중 하나가 반환됩니다. 1 단어가 당신의 패턴에 맞는다면 0 그렇지 않은 경우 (또는 대상 셀이 비어있는 경우).

D2에 수식을 입력하고 H2에 끌어다 놓거나 필요한 마지막 행까지 끌어다 놓습니다.

대상 셀을 채우려면 A 열의 모든 데이터를 선택하고 복사하여 I 열에 붙여 넣습니다 (텍스트를 열로 덮어 쓰면 데이터가 덮어 쓰여지고 데이터 열에서 시작됩니다). I 열의 데이터를 선택하십시오. Data 탭에서 Data Tools 그룹을 클릭하십시오. Text to Columns. 자명 한 마법사가 생깁니다.

데이터를 구분하고 선택합니다. space 구분 기호로 사용합니다. 단어를 구문 분석하기를 원한다고 생각하는 방식에 대한 미리보기를 제공합니다. 마법사가 끝나면 행의 연속 된 셀에 각 단어가 배치됩니다.

D : H의 수식에 적어도 하나는 표시되어야합니다. 1 각 행에. 그것들은 당신의 말이고, 그들의 칼럼은 파싱 된 단어와 같은 상대적 위치에 있습니다.

B 열에서 첫 단어의 값을 가져 오려면 INDEX 및 MATCH를 사용하여 첫 번째 단어를 찾습니다. 1 D : H에있는 행에서 I : M의 같은 행에서 해당 값을 검색합니다. 예를 들어, B2는 다음과 같습니다.

=INDEX(I2:M2,MATCH(1,D2:H2,0))

이것은 I2에서 셀의 값을 검색합니다 : M2는 정확히 일치하는 위치에 해당합니다. 1 D2 : H2에서 발견되었다.

열 C에 대한 후속 값을 얻으려면 (그리고 두 개 이상인 경우), N 번째 일치를 찾는 여러 솔루션이 있습니다 1. 여기있다. 링크 한 가지 방법으로

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