2014-02-20 4 views
1

안녕하세요,Excel VBA - 행에서 중복 제거

이전 게시물을 읽고이 특정 문제에 대한 답변을 찾을 수 없습니다.

내가 A2, B2로 값을 반환 엑셀의 VBA 스크립트를 가지고, C2는 다음 A3, B3, C3에 데이터를 채우기 위해 루프를 통해 실행 등 내가 중복 값을 제거하기 만하면 무엇

행에서 VBA를 사용하고 유일한 값만 반환합니다. 나는 "/"를 사용하여 구분합니다.

빈 셀을 무시해야합니다.

아이디어는 결과가 다음 루프 전에 계산된다는 것입니다.

이상적 I은 C1 등의 A1, B1,

Sample Data

이의 협조가 인정된다 채울 필요없이 결과를 표시 할 것이다.

'Conditions 
    If Cells(rw, 24) = Cells(rw, 26) And Cells(rw, 24) = Cells(rw, 25) Then Cells(rw, 18) = "'" & Cells(rw, 24) 
    If Cells(rw, 24) <> Cells(rw, 26) Then Cells(rw, 18) = Cells(rw, 24) & "/" & Cells(rw, 26) 

    Cells(rw, 20) = Application.VLookup(Cells(rw, 18), Workbooks("CMF Export.xlsx").Sheets("Data").Columns("C:D"), 2, False) ' Vlookup function 
    If Not aCell Is Nothing Then 
Cells(rw, 23 + i) = Right(aCell.Value, 7) 
End If 
+0

실패 지금까지 시도 것을 포스트. –

+0

나는 정상적인 if 문을 공식을 사용하여 결과를 계산했습니다. 이것은 전체 프로세스 속도를 늦추고 있습니다. 나는이 특별한 문제로 어디서부터 시작해야할지 전혀 모른다. – Mark

+0

이것은 시도한 코드이지만 세 번째 검사를 고려하지 않았습니다. 셀 참조는 내 예제와 동일하지 않지만 스위트로 변경됩니다. – Mark

답변

2

봅니다 고유 한 값을 저장하는 Collection를 사용 :

Sub test() 
    Dim col As Collection 
    Dim r As Range, c As Range 
    Dim res As String, lastrow As Long, el 
    'change sheet name to suit  
    With ThisWorkbook.Worksheets("Sheet1") 
     'Find last non empty row in column A 
     lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 
     'add text format to column E 
     .Range("E2:E" & lastrow).NumberFormat = "@" 
     'iterates through each row 
     For Each r In .Range("A2:C" & lastrow).Rows   
      'initialize collection 
      Set col = New Collection 
      'iterates through each cell in row 
      For Each c In r.Cells 
       'next lines adds only unique values 
       On Error Resume Next 
       col.Add CStr(c.Value), CStr(c.Value) 
       On Error GoTo 0 
      Next     
      'collect result 
      res = "" 
      For Each el In col 
       res = res & el & "/" 
      Next        
      If res <> "" Then res = Left(res, Len(res) - 1) 
      'write result in column E 
      .Range("E" & r.Row).Value = res 
      'adding VLOOKUP (follow up from comments) 
      'With .Range("F" & r.Row) 
      'adjust Sheet1!A1:C100 to suit your needs 
      ' .Formula = "=VLOOKUP(" & res & ",Sheet1!A1:C100,3,0)" 
      'next line rewrites formula with formula result 
      ' .Value = .Value 
      'End With 
      Set col = Nothing 
     Next 
    End With 
End Sub 

결과 :

enter image description here

+1

피드백을 보내 주셔서 감사합니다. 이것을 스크립팅에 통합 할 것입니다. 나는 그 예를두고 달렸고, 내가 찾던 결과를 나에게 주었다. :) – Mark

+1

재미있는 부분이 이미 만들어 둔 변수를 사용하여 코드에 통합하려고합니다. lol – Mark

+0

스크립트는 꿈꾸는 것처럼 작동합니다. 내 큰 스크립트에 그것을 통합했습니다. 결과를 사용하려면 스크립트에 Vlookup을 삽입해야합니다. 고마워, Mark – Mark