Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Удаление дубликатов строки.
 
Всем Доброго, уважаемые форумчане! Помогите, пожалуйста, решить задачу.
Суть:
Есть 2 столбца, в первом встречаются повторяющиеся значения. Нужно удалить дубли, при этом сложить значения в ячейках этих же строк во втором столбце.
Пробовал с помощью словаря решить - не хватило знаний, как результат: дубли просто исчезли из списка совсем.
Пример приложил.


Скрытый текст
Разность двух массивов с помощью коллекции
 
Доброго времени суток!

Есть задача:
Сравнить данные на двух листах, по первому столбцу. Строки которые, не совпали нужно вывести на отдельный лист. Метод построчного перебора данных в цикле отпадает, т.к. строк несколько тысяч. Пробовал решить с помощью массивов, но в этом случае не выходит сравнить элементы массивов именно на неравенство, работает только со знаком "=". Наткнулся на просторах рунета на такой код:

Скрытый текст


Пример работает, но при попытке допилить макрос с массивами под свои условия, столкнулся с ошибкой несоответствия типов данных:

Скрытый текст


Подсвечивается строка функции:
Код
tempItems.Add item, item

с Run-time error 13 type mismatch

Файл с примером в аттачменте. Первые два листа с данными, третий лист с результатом. Помогите, пожалуйста, разобраться с решением задачи.
Изменено: Hostyle - 04.08.2018 21:29:52
Сравнение данных на листе с помощью масссивов
 
Доброго времени суток!
Суть проблемы такова, нужен был макрос для создания накладной. А именно: на "Лист5" сравнить данные в столбце A  с данными в столбце Е и данные в столбце D с данными в столбце F. Если в обоих случаях данные совпадают, то копировать на лист "test" строки столбцов  B, C, G, H.
Решил воспользоваться массивами. Сразу скажу, в массивах разбираюсь очень слабо. Нарыл в рунете код и "наощупь" допилил для выполнения своих задач.
Всё нормально работало, до тех пор пока я не решил заняться улучшайзингом. Закомментировал рабочие строки, менял параметры. смотрел на результат. Результат оакзался неудовлетворительным и я решил вернуться к рабочему варианту. Раскомментировал обратно то, что должно работать. итог: Runtime error 9 - Subscripts out of range.
код макроса следующий:
Код
 Sub Сравнение()

Dim i As Long, n As Long, m As Long, k As Long, j As Long
    Dim rng As Range, rng2 As Range
     Dim arr() As Variant, arrSecond() As Variant
    
    Workbooks("Накладная.xlsm").Worksheets("Лист5").Activate      
    
    Set rng = Cells(Rows.Count, 1)
    Set rng2 = Cells(Rows.Count, 5)
       
    If Not IsEmpty(rng) Then Set rng = Range("A:D") Else Set rng = Range(Range("D1"), rng.End(xlUp))
    If Not IsEmpty(rng2) Then Set rng2 = Range("E:H") Else Set rng2 = Range(Range("H1"), rng2.End(xlUp))
    
    arr = rng
    arrSecond = rng2
    
    n = UBound(arr)
     m = n - Evaluate("COUNTBLANK(" & rng.Columns(2).Address(ReferenceStyle:=Application.ReferenceStyle) & ")")
     
    
    ReDim arr2(1 To m, 1 To 8) As Variant

        For i = 1 To n
         For j = 1 To n
         
        If arr(i, 1) = arrSecond(j, 1) And arr(i, 4) = arrSecond(j, 2) Then
            k = k + 1
             
            arr2(k, 1) = arr(i, 1)
            arr2(k, 2) = arr(i, 2)
            arr2(k, 3) = arrSecond(j, 3)
            arr2(k, 4) = arrSecond(j, 4)            
            
        End If
         Next j
        Next i    
    
    Workbooks("Накладная.xlsm").Worksheets("test").Activate
    Range("A:A").NumberFormat = "@"    
    Cells(1, 1).Resize(m, 4) = arr2

End Sub

ругается на эту строчку:

Код
If arr(i, 1) = arrSecond(j, 1) And arr(i, 4) = arrSecond(j, 2) Then

При дебаге значения arrSecond(j, 1) и arrSecond(j, 2) "Subscripts out of range"

Весь день ломаю голову, помогите, пожалуйста, разобраться.

Страницы: 1
Наверх