2017-11-23 1 views
0

나는 조금 다른 이름의 국가를 쌍으로 만드는 방법에 대한 도움이 필요합니다. 문제는 서로 다른 출처의 두 데이터 집합이 있다는 것입니다. 첫 번째 시트 이름은 ISO 이름과 바로 가기를 기반으로하지만 두 번째 시트 이름은 ISO 이름을 기반으로하지 않습니다.Excel에서 거의 동일한 이름의 국가를 쌍으로 만드는 방법은 무엇입니까?

시트 1 : enter image description here

시트 2 : 나는 시트 2에서 이름으로 공식 이소 이름을 쌍으로 사용 VLOOKUP 함수를 시도했지만 미국의 결과였다 enter image description here

영국

문제 이름 대체를 피하는 방법에 대해 생각해 보셨습니까?

감사합니다.

+0

'Code' 열을 Sheet2에 추가하십시오. 일치하는지 확인하십시오. – Vityata

+0

@skutik 몇 가지 변형이 있다면 거의 불가능합니다. 수식 또는 VBA 접근 방식은 매번 신뢰할만한 결과를 제공하지 못할 수도 있습니다. –

+0

사용할 수있는 퍼지 조회가 있지만 Shrivallabha Redij와 동의하는 경향이 있습니다. 예외 목록이 없으면 예외입니다. – SJR

답변

0

난 당신이 시트 2 국가에 Sheet1의 국가를지도 매핑 테이블 함께 할 것, 다음 조회는 내가 approximative이 시트 2

=vlookup(vlookup(sheet1country,yourmappingtable,2,0),sheet2data,yourcolumn,0) 
0

에서 해당 국가를 얻을 수있는 중첩 된 VLOOKUP이있을 것이다 아래로 VBA에서 테이블의 주요 부분을 해결할 솔루션 :

enter image description here

는 두 번째 시트에 문자열을 찾은 다음 메트로 아래 시트 1에 각각의 결과를 입력 할 수있는 경우 내 코드 만 검사한다 (될 경기) 미국의
1 미국 아메리
의 미국 스
3 미국의
이 미국 ...
(13) 미국
: 3. RIC 그래서 A2에서 함께 시도 "영국"과 같이 다른 목록에서 다른 "영국"과 같은 국가가있는 경우 주어진 결과는 미국 중 하나가됩니다.

그럼에도 불구하고 일부 수동 작업이 필요합니다.

Sub Find_Countries() 

Dim LastRow As Long 
LastRow = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row 

Dim i As Integer 
For i = 2 To LastRow 
Dim ra As Range 
Dim a As Integer 
a = Len(Range("A" & i)) 

Do 
Set ra = Sheets(2).Cells.Find(What:=Left(Sheets(1).Range("A" & i), a), LookIn:=xlValues, LookAt _ 
     :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False) 

a = a - 1 
Loop Until Not ra Is Nothing 

Sheets(1).Range("E" & i).Value = ra.Offset(0, 1) 
Next i 

End Sub 
관련 문제