Имеется список деталей с размерами и количеством , детали повторяются , можно ли оставить только уникальные , а их количество сложить? Попробую пример прикрепить Сори еще раз
Sub Otbor()
Dim i%, j&, n&
Dim a, k&
With Worksheets("Лист2")
n = .Cells(Rows.Count, 1).End(xlUp).Row
.Range(.[a5], .Cells(n, 7)).ClearContents
End With
With Worksheets("Лист1")
n = .Cells(Rows.Count, 3).End(xlUp).Row
a = .Range(.[c3], .Cells(n, 9))
End With
With CreateObject("Scripting.Dictionary")
On Error Resume Next
For i = 1 To UBound(a)
If .exists(a(i, 1)) Then
n = .Item((a(i, 1)))
a(n, 7) = a(n, 7) + a(i, 7)
Else
k = k + 1
.Item((a(i, 1))) = k
For j = 1 To 7: a(k, j) = a(i, j): Next
End If
Next i
End With
Worksheets("Лист2").[a5].Resize(k, 7) = a
a = Empty
End Sub
Sub Otbor()
Dim i%, j&, n&
Dim a, k&
With Worksheets("Лист2")
n = .Cells(Rows.Count, 2).End(xlUp).Row
.Range(.[a5], .Cells(n, 10)).ClearContents
End With
With Worksheets("Лист1")
n = .Cells(Rows.Count, 3).End(xlUp).Row
a = .Range(.[c3], .Cells(n, 9))
End With
With CreateObject("Scripting.Dictionary")
On Error Resume Next
For i = 1 To UBound(a)
If .exists(a(i, 1) & "|" & a(i, 4)) Then
n = .Item(a(i, 1) & "|" & a(i, 4))
a(n, 7) = a(n, 7) + a(i, 7)
Else
k = k + 1
.Item(a(i, 1) & "|" & a(i, 4)) = k
For j = 1 To 7: a(k, j) = a(i, j): Next
End If
Next i
End With
Worksheets("Лист2").[a5].Resize(k, 7) = a
a = Empty
End Sub
возник по ходу один тревожащий очень сильно вопрос! сколько ключей может вместить в себя Словарь?? - а то вот собираю словарь - он мне заявляет, что у него Count 310 Item-ов (k)... (в Locals заявляет)... НО заполняет только 256 и останавливается "Subscript out of range" - верно ли я понимаю, что он взять больше не может... или проблему искать в другом... т е вопрос на уточнение: нет ли лимита 256 ключей для Словарей??... и для Коллекций (на всякий случай - если придётся искать др подход) ??
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
- всё прошло гладко, и потом всё выгрузил полностью... - ошибку уже не выдаёт. Спасибо
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
JeyCi, К-во значений в словаре, коллекции ограничивается только объемом памяти компа. Так что ошибка у Вас не из-за этого. Я бы не стал использовать On Error Resume Next, пока не выяснена причина ошибки. Иначе рискуете попасть на непредсказуемые результаты.
согласна, это крайний вариант - если найду первопричину - отпишусь... но пока вроде отработал корректно с моими данными (файл просто не мой - текстовик, загруженный из net - ещё не поняла, что с ним)
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
KuklP, спасибо за беспокойство, разобралась на всякий случай - выгружает всё (хоть в Locals и показывает только 256) - ошибку при заполнении выдаёт на последней строке, которая звучит *** END OF REPORT *** - сама по себе меня не интересует - дальше не разбиралась, что там с ней... после неё уже ничего нет, да и она сама ценности не представляет в качестве ключа
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)