ant6729
Дата: Суббота, 14.04.2018, 00:22 |
Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Всем привет Подскажите, пожалуйста, как просуммировать по каждому ключу в колонке G
Всем привет Подскажите, пожалуйста, как просуммировать по каждому ключу в колонке G ant6729
Ответить
Сообщение Всем привет Подскажите, пожалуйста, как просуммировать по каждому ключу в колонке G Автор - ant6729 Дата добавления - 14.04.2018 в 00:22
Hugo
Дата: Суббота, 14.04.2018, 00:32 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация:
707
±
Замечаний:
0% ±
2019
как просуммировать по каждому ключу
[vba]Код
.Item(c) = .Item(c) + 1 ... Range("G2").Resize(.Count) = Application.Transpose(.Items)
[/vba] Только по спецификации не гарантируется соответствие ключей и итемов по позициям. Хотя всегда совпадало... но в важных больших работах я бы не рисковал. P.S. Кстати тут удобнее выгружать сразу так: [vba]Код
Range("F2").Resize(.Count, 2) = Application.Transpose(Array(.Keys, .Items))
[/vba]
как просуммировать по каждому ключу
[vba]Код
.Item(c) = .Item(c) + 1 ... Range("G2").Resize(.Count) = Application.Transpose(.Items)
[/vba] Только по спецификации не гарантируется соответствие ключей и итемов по позициям. Хотя всегда совпадало... но в важных больших работах я бы не рисковал. P.S. Кстати тут удобнее выгружать сразу так: [vba]Код
Range("F2").Resize(.Count, 2) = Application.Transpose(Array(.Keys, .Items))
[/vba]Hugo
excel@nxt.ru webmoney: E265281470651 Z422237915069
Сообщение отредактировал Hugo - Суббота, 14.04.2018, 00:37
Ответить
Сообщение как просуммировать по каждому ключу
[vba]Код
.Item(c) = .Item(c) + 1 ... Range("G2").Resize(.Count) = Application.Transpose(.Items)
[/vba] Только по спецификации не гарантируется соответствие ключей и итемов по позициям. Хотя всегда совпадало... но в важных больших работах я бы не рисковал. P.S. Кстати тут удобнее выгружать сразу так: [vba]Код
Range("F2").Resize(.Count, 2) = Application.Transpose(Array(.Keys, .Items))
[/vba]Автор - Hugo Дата добавления - 14.04.2018 в 00:32
ant6729
Дата: Суббота, 14.04.2018, 01:02 |
Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Спасибо, Hugo! Все взлетело...Посчитались количества Numbers Ну, ок... а чтобы в колонке g суммировались сами Elements как в суммеесли для каждого Numbers...Это как?
Спасибо, Hugo! Все взлетело...Посчитались количества Numbers Ну, ок... а чтобы в колонке g суммировались сами Elements как в суммеесли для каждого Numbers...Это как? ant6729
Ответить
Сообщение Спасибо, Hugo! Все взлетело...Посчитались количества Numbers Ну, ок... а чтобы в колонке g суммировались сами Elements как в суммеесли для каждого Numbers...Это как? Автор - ant6729 Дата добавления - 14.04.2018 в 01:02
Hugo
Дата: Суббота, 14.04.2018, 01:10 |
Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация:
707
±
Замечаний:
0% ±
2019
[vba]Код
.Item(c) = .Item(c) + соотв.элемент
[/vba] но в данном цикле никак не возьмёте, а переписывать код Вам
[vba]Код
.Item(c) = .Item(c) + соотв.элемент
[/vba] но в данном цикле никак не возьмёте, а переписывать код Вам Hugo
excel@nxt.ru webmoney: E265281470651 Z422237915069
Ответить
Сообщение [vba]Код
.Item(c) = .Item(c) + соотв.элемент
[/vba] но в данном цикле никак не возьмёте, а переписывать код Вам Автор - Hugo Дата добавления - 14.04.2018 в 01:10
ant6729
Дата: Суббота, 14.04.2018, 12:53 |
Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация:
2
±
Замечаний:
40% ±
Excel 2010
Прозрел, но как-то неоптимально на листе отсортировался по намберам на всякий Numbers Elements 1 1 2 2 2 7 4 3 4 10 5 4 10 11 12 6 12 5 12 8 12 9 И два раза использовал [vba]Код
With CreateObject("Scripting.Dictionary")
[/vba] потому что по другому не знаю как Не могу понять, как один раз это сделать [vba]Код
Sub jjjj() Dim ar, ai, ak, arCount() Dim count1&, count2& Dim i& Dim c lr = Cells(Rows.Count, 1).End(xlUp).Row ar = Range("A1:B" & lr) With CreateObject("Scripting.Dictionary") For i = 2 To UBound(ar) .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 2) Next ak = .Keys ai = .Items Range("C1").Resize(, 3) = Array("Uniques", "UniquesCOUNT", "SumUniques") Columns.AutoFit Range("E2").Resize(.Count) = Application.Transpose(ai) 'ïðîñòàíîâêà ñóììû ïî ïîçèöèÿì For Each c In Range("A2", Range("A" & Rows.Count).End(3)).Value .Item(c) = .Item(c) + 1 Next With CreateObject("Scripting.dictionary") For Each c In Range("A2", Range("A" & Rows.Count).End(3)).Value .Item(c) = .Item(c) + 1 Next Range("D2").Resize(.Count, 1) = Application.Transpose(Array(.Items)) End With [c1].Sort Key1:=[c1], Order1:=xlAscending, Header:=xlYes End With End Sub
[/vba] Как можно оптимизироваться?
Прозрел, но как-то неоптимально на листе отсортировался по намберам на всякий Numbers Elements 1 1 2 2 2 7 4 3 4 10 5 4 10 11 12 6 12 5 12 8 12 9 И два раза использовал [vba]Код
With CreateObject("Scripting.Dictionary")
[/vba] потому что по другому не знаю как Не могу понять, как один раз это сделать [vba]Код
Sub jjjj() Dim ar, ai, ak, arCount() Dim count1&, count2& Dim i& Dim c lr = Cells(Rows.Count, 1).End(xlUp).Row ar = Range("A1:B" & lr) With CreateObject("Scripting.Dictionary") For i = 2 To UBound(ar) .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 2) Next ak = .Keys ai = .Items Range("C1").Resize(, 3) = Array("Uniques", "UniquesCOUNT", "SumUniques") Columns.AutoFit Range("E2").Resize(.Count) = Application.Transpose(ai) 'ïðîñòàíîâêà ñóììû ïî ïîçèöèÿì For Each c In Range("A2", Range("A" & Rows.Count).End(3)).Value .Item(c) = .Item(c) + 1 Next With CreateObject("Scripting.dictionary") For Each c In Range("A2", Range("A" & Rows.Count).End(3)).Value .Item(c) = .Item(c) + 1 Next Range("D2").Resize(.Count, 1) = Application.Transpose(Array(.Items)) End With [c1].Sort Key1:=[c1], Order1:=xlAscending, Header:=xlYes End With End Sub
[/vba] Как можно оптимизироваться? ant6729
Сообщение отредактировал ant6729 - Суббота, 14.04.2018, 12:54
Ответить
Сообщение Прозрел, но как-то неоптимально на листе отсортировался по намберам на всякий Numbers Elements 1 1 2 2 2 7 4 3 4 10 5 4 10 11 12 6 12 5 12 8 12 9 И два раза использовал [vba]Код
With CreateObject("Scripting.Dictionary")
[/vba] потому что по другому не знаю как Не могу понять, как один раз это сделать [vba]Код
Sub jjjj() Dim ar, ai, ak, arCount() Dim count1&, count2& Dim i& Dim c lr = Cells(Rows.Count, 1).End(xlUp).Row ar = Range("A1:B" & lr) With CreateObject("Scripting.Dictionary") For i = 2 To UBound(ar) .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 2) Next ak = .Keys ai = .Items Range("C1").Resize(, 3) = Array("Uniques", "UniquesCOUNT", "SumUniques") Columns.AutoFit Range("E2").Resize(.Count) = Application.Transpose(ai) 'ïðîñòàíîâêà ñóììû ïî ïîçèöèÿì For Each c In Range("A2", Range("A" & Rows.Count).End(3)).Value .Item(c) = .Item(c) + 1 Next With CreateObject("Scripting.dictionary") For Each c In Range("A2", Range("A" & Rows.Count).End(3)).Value .Item(c) = .Item(c) + 1 Next Range("D2").Resize(.Count, 1) = Application.Transpose(Array(.Items)) End With [c1].Sort Key1:=[c1], Order1:=xlAscending, Header:=xlYes End With End Sub
[/vba] Как можно оптимизироваться? Автор - ant6729 Дата добавления - 14.04.2018 в 12:53