2017-09-05 4 views
1

와일드 카드로 vlookup의 기본 사용을 이해하지만 최근에 문제가 있습니다.와일드 카드가 작동하지 않는 Vlookup (부분 문자열 일치) long 값

셀에 포함 된 값을 문자열의 일부로 조회해야합니다. 아래 샘플에서 나는 colC에서 colA를 찾아야 만하고 col D의 값을 col B으로 반환합니다.

나는 =VLOOKUP("*"&A1&"*",C$1:D$2,2,0)을 사용하며 이는 B1에서만 작동합니다.

B2 & B3이 같은 방식으로 작동하지 않습니까? 어떤 해결책?

샘플 :

Sample

+0

셀 C2에서 C335 이후의 숫자를 삭제하면 그러면 함수가 작동합니다. 나는 정말로 이유를 모른다. – Luke

+0

필자가 아는 한 그것이 문서화되지는 않았지만,'lookup_value'도 아니고'lookup_array'의 단일 셀 값도 255자를 넘을 수 없습니다. 이것은'* LOOKUP'과 관련이 있으며 또한 'MATCH'와 관련이 있습니다. –

+0

긴 문자열에서 작동하지 않는 공식 이외에 짧은 문자열에서도 공식은 부분 일치의 결과를 반환합니다. 당신의 예제에서, 만약'A1 : = R7'이라면,'a'를 리턴 할 것입니다. –

답변

0

악셀하여 조사와 의견에 따라 경찰, VLOOKUP 길이가 255 자 이상의 값으로 작동하지 않습니다. 해결 방법은 더 긴 값을 처리하는 SEARCH 함수가있는 배열 수식을 사용하는 것입니다. 두 번 다음 + SHIFT + ENTERCTRL를 눌러 대신 단지 자체 Enter 키를 눌러 저장, B1 셀에 클릭하고이 공식을 붙여 : {중괄호}을 보여줍니다 셀을 선택

=INDEX($D$1:$D$2,MATCH(TRUE,ISNUMBER(SEARCH(A1&",",$C$1:$C$2&",")),0)) 

당신이 그것을 정확하게 입력하면 수식 주위에 있고 원하는 결과로 평가되어야합니다.

이 수식은 먼저 C1 : C2의 모든 셀에서 A1의 위치를 ​​검색하는 배열을 만듭니다. 배열은 숫자 (A1이있는 경우)와 오류 (A1이없는 경우)로 구성됩니다.

ISNUMBER는 (A1 발견되지 않는)는 (A1 발견된다)의 배열 TRUE FALSE

MATCH는 다음 어레이 내의 제 TRUE 값을 구하여를 생성한다.

INDEX는 D1 : D2에서 해당 값을 반환합니다.

편집 : 이제 수식에서 A1의 값과 그 뒤에 쉼표가 검색됩니다. 이렇게하면 정확한 일치가 이루어집니다. 수식이 C 열에있는 셀의 마지막 값과 일치하도록하려면 C 열의 값 끝에 쉼표도 추가됩니다.

+1

수식과 OP에서 게시 한 데이터를 사용하여 'A'열에 'C1'과 같은 항목을 입력하면 결과가 'D'로 반환됩니다. –

+0

마이클을 도와 주셔서 감사합니다. 그리고 당신의 설명도 분명합니다. 당신의 공식을 시도한 후에, 그것은 잘 작동했습니다. 그러나 Ron의 첫 번째 주석이 내 관심을 끌었 기 때문에 수식이 부분 일치를 반환한다는 것을 알았습니다. 예를 들어 A1 : = R7을 변경하면 여전히 a를 반환합니다. 정확하게 일치시키는 방법이 있습니까? – Luke

+0

안녕 루크, 나는 또한 쉼표를 찾을 수있는 수식을 업데이 트했습니다 열의 값 뒤에.수식에서 처리되기 때문에 C 열의 데이터를 쉼표로 끝내려면 변경할 필요가 없습니다. 유일한 요구 사항은 C 열의 모든 값이 쉼표로 끝나는 것입니다 (각 셀의 마지막 값 제외). 쉼표 뒤에 공백이 있으면 상관 없지만 쉼표 앞에는 공백이 없어야합니다. – Michael

관련 문제