2014-10-24 3 views
-2

그래서 기본적으로 범위를 선택하는 매크로를 작성하려면 배열의 값과 셀의 ​​값을 비교하고 범위의 끝 부분에 누락 된 값을 추가하십시오 .엑셀 채우기 범위 배열의 누락 된 값

+2

이 질문은 연구 노력을 나타내지 않습니다. 누군가에게 당신을 위해 무언가를 코딩하도록 요청하는 것은 받아 들여지지 않는 질문입니다. 여기에 있습니다. 질문을 편집하여 지금까지 조사한 내용과 에 작성하려고 시도한 코드가이 작업을 수행하면 더 나은 질문이되고 훨씬 더 좋은 답변을 얻을 수 있습니다. –

+0

의견을 주셔서 감사합니다. 내가 취할 접근법이나 심지어 VBA에서 일종의 배열을 사용하여이 작업을 수행 할 수 있는지 알지 못하기 때문에 아직 코드가 없습니다. 대부분의 연구는 비어 있습니다. 나는 그 문제의 일부로 여기에 질문을 게시했습니다. 나는 어디서부터 시작해야하는지에 대한 코드를 말할 필요가 없다. 미안해. 문구가 혼란 스러웠을지도 몰라. –

답변

1

문자열을 사용하여이 예를보십시오 : 대신 범위 ("A1")로, 셀 (행 번호, 열 번호)를 사용하여 세포를 통해 어레이 및 루프를 통해 루프를 수행 할 수 있습니다, 당신이 시작할 수 있도록

을 행별로 각 값을 비교합니다. 그런 다음 새 배열과 일치하지 않는 값을 추가하면 나중에 다른 루프의 시트로 다시 전달됩니다.

값이 시트 ("Sheet1")부터 시작한다고 가정하십시오. 범위 ("A1"). 샘, 짐, 스탠리, 제프, 마이크, 제프, 토비 : 다음 예제 이름.

Dim lastRow As Integer 
Dim i As Integer 
Dim r As Integer 
Dim n As Integer 
Dim unMatchedArray() As String 

Private Sub ArrayChecker() 

    Dim myArray(7) As String 
    Dim match As Boolean 

    n = 0 

    myArray(0) = "Jeff" 
    myArray(1) = "Stanly" 
    myArray(2) = "Mike" 
    myArray(3) = "Sam" 
    myArray(4) = "Toby" 
    myArray(5) = "Reginald" 
    myArray(6) = "Wolfgang" 
    myArray(7) = "Manual" 

    Call GetLastRow 

    For i = 0 To UBound(myArray) 

     r = 1 
     match = False 
     For r = 1 To lastRow 
      If myArray(i) = Sheets("Sheet1").Cells(r, 1) Then 
       match = True 
       Exit For 
      End If 
     Next r 

     If match = False Then 
      ReDim Preserve unMatchedArray(n) 
      unMatchedArray(n) = myArray(i) 
      n = n + 1 
     End If 

    Next i 

    n = n - 1 

    If n > 0 Then 
     Call AddToSheet 
    End If 

End Sub 

Private Sub GetLastRow() 

    ' checking Range("A1:A65536") 
    lastRow = Sheets("Sheet1").Cells(65536, 1).End(xlUp).Row 

End Sub 

Private Sub AddToSheet() 

    Call GetLastRow 
    r = lastRow + 1 
    i = 0 

    For i = 0 To n 
     Sheets("Sheet1").Cells(r, 1) = unMatchedArray(i) 
     r = r + 1 
    Next i 

End Sub