2012-07-23 4 views
-1

VBA를 사용하여 Excel에서 두 통합 문서의 사용자 이름을 비교해야합니다. 어떻게하면됩니까? 통합 1에서 두 개의 다른 통합 문서에서 문자열 비교

  • : 열 A는 통합 2 10 명
  • 포함되어 예를 들어

    열 A는 I 칼럼 B의 셀을 가질 필요가 10 명

포함 각 통합 문서는 경기에 따라 녹색 또는 빨간색으로 표시됩니다.

+1

당신이 "일치"라고, 당신은 의미합니까 통합 문서 1의 사용자 이름이 통합 문서의 열 A에 어디 나타나는지 2? 또는 통합 문서의 사용자 이름이 통합 문서 2의 똑같은 셀에있는 경우 "일치"입니까? – LittleBobbyTables

+0

성냥은 대문자와 소문자를 고려해야합니까 아니면 중요하지 않습니까? – Trace

+1

여기에 예제가 많이 있습니다 ([example] (http://stackoverflow.com/questions/1961996/lookup-on-another-sheet-in-excel).보세요, 질문과 쇼를 정확하게 기재하십시오. 당신이 이미 뭔가를 시도해 본다면 더 도움이 될 것입니다. – JMax

답변

1

나는이 같은 것을 의미한다고 생각하지만 항상 신중해야합니다. 아래 코드는 작동하지만 범위를보다 동적으로 설정하려고 할 것입니다.

Option Explicit 
Sub Compare_Names() 

Dim oBook_1    As Excel.Workbook 
Dim oBook_2    As Excel.Workbook 
Dim oRange_1   As Range 
Dim iRange_1_Rows  As Integer 
Dim oRange_2   As Range 
Dim iRange_2_Rows  As Integer 

Dim vArray    As Variant 
Dim vArray_Found  As Variant 
Dim iCnt    As Integer 
Dim iCnt_B    As Integer 


Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

Set oBook_1 = Workbooks.Open("U:/Names_1.xls") 
    Set oRange_1 = oBook_1.Sheets(1).Range("A1:A5") 'Can be dynamically set when needed 
    iRange_1_Rows = oRange_1.Rows.Count 
    ReDim vArray(1 To iRange_1_Rows, 1 To 1) 
    vArray = oRange_1 
    Set oRange_1 = Nothing 
oBook_1.Close 
Set oBook_1 = Nothing 

Set oBook_2 = Workbooks.Open("U:/Names_2.xls") 
    Set oRange_2 = oBook_2.Sheets(1).Range("A1:A5") 
    iRange_2_Rows = oRange_2.Rows.Count 
    For iCnt = 1 To iRange_1_Rows 
     For iCnt_B = 1 To iRange_2_Rows 

      ReDim vArray_Found(1 To iRange_2_Rows, 1 To 1) 

      If Trim(vArray(iCnt, 1)) = Trim(oRange_2(iCnt_B)) Then 
       oRange_2(iCnt_B).Interior.Color = vbGreen 
       vArray(iCnt_B, 1) = True 
      End If 
     Next iCnt_B 
    Next iCnt 

    For iCnt = 1 To iRange_2_Rows 
     If vArray(iCnt, 1) <> True Then 
      oRange_2(iCnt).Interior.Color = vbRed 
     End If 
    Next iCnt 

    Set oRange_2 = Nothing 
oBook_2.Save 
oBook_2.Close 
Set oBook_2 = Nothing 

End Sub 

가 아닌 대소 문자를 구분 비교를 원하는 경우에 당신은 사용할 수 있습니다

if UCase(Trim(vArray(iCnt, 1))) = UCase(Trim(oRange_2(iCnt_B))) Then 
+1

와우, 아마도 셀의 수식을 사용하여 해결할 수 있을까요? 잘못 이해하지 마시고, 아주 좋은 예입니다. 신속하게 작성할 수있을 것이라고 확신하지만 수식이 더 유지 보수가 가능한지 궁금합니다. 이 컴퓨터에는 Excel이 없으므로 수식을 테스트 할 수는 없습니다. 예를 들어 abo 예제와 같이 생각합니다. 일할 수도 있니? –

+0

필요에 따라 달라집니다. 주어진 코드는 자신의 요구 사항에 따라 운영자가 사용자 정의 할 수 있습니다. Excel 수식이 충분하면 그 수식을 자유롭게 사용할 수 있습니다. 그러나 위의 의견에 명시된 바와 같이, 그것은이 시점에서 불분명합니다 ... – Trace