2014-10-24 2 views
-2

Итак, я ищу, чтобы написать макрос, который будет в основном выбирать диапазон, сравнивать значения в ячейках со значениями из массива и добавлять недостающие в конец диапазона ,Excel Fill range с отсутствующими значениями массива

+2

Этот вопрос не показывает никаких исследований. Просить кого-то что-то закодировать для вас не является принятым вопросом здесь. Если вы отредактируете вопрос, чтобы показать, что вы исследовали до сих пор, и код, который вы пытались записать в , выполните это действие, это будет гораздо лучший вопрос и получите гораздо лучшие ответы. –

+0

Спасибо за комментарий. У меня еще нет кода, так как я не знаю, какой подход взять, или даже я могу использовать какой-то массив в VBA для выполнения этой задачи. Большая часть исследований появляется пустым, и я разместил здесь этот вопрос как часть этого. Мне не нужен код, чтобы сказать, просто подсказка о том, с чего начать. извините, моя формулировка, возможно, путала там –

ответ

1

Попробуйте этот пример, используя строки:

Для начала, вы можете использовать ячейки (строка # столбец #), вместо Range («A1») и выполнять циклы по массиву и проходным клеток по строке, сравнивая каждое значение. Затем добавив значения, которые не соответствуют новому массиву, вы позже перейдете обратно в лист в другом цикле.

Предполагая, что ваши значения начинаются с листа («Лист1»). Диапазон («A1»). Со следующими названиями: например, Сэм, Джим, Stanly, Джефф, Майк, Джефф, Тоби.

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 
Смежные вопросы