Имеется таблица N:M, заполненная значениями. Требуется, в целом, подсчитать сколько раз значение присутствует в таблице. Хотя бы сделать первую стадию преобразовать матрицу N:M в столбец 1:K (где K=N*M) Но сделать это надо только с помощью формул листа.
Если есть идеи поделитесь. Спасибо
Имеется таблица N:M, заполненная значениями. Требуется, в целом, подсчитать сколько раз значение присутствует в таблице. Хотя бы сделать первую стадию преобразовать матрицу N:M в столбец 1:K (где K=N*M) Но сделать это надо только с помощью формул листа.
Наверно неточно объяснил. Попробую объяснить по шагам и на сильно упрощенном примере (пример прилагается z1.xlsx), что требуется получить.
Имеется таблица, число строк и столбцов точно не определено (их много, строк - сотни, столбцов - десятки). В примере исходная таблица - A1:E5. Внутри таблицы находятся некоторые коды: A, B, C, D и т.д. (количество кодов неопределенное).
Требуется получить уникальный перечень кодов и сколько раз они встречаются в исходной таблице. Пример результата - G1:H8
Наверно неточно объяснил. Попробую объяснить по шагам и на сильно упрощенном примере (пример прилагается z1.xlsx), что требуется получить.
Имеется таблица, число строк и столбцов точно не определено (их много, строк - сотни, столбцов - десятки). В примере исходная таблица - A1:E5. Внутри таблицы находятся некоторые коды: A, B, C, D и т.д. (количество кодов неопределенное).
Требуется получить уникальный перечень кодов и сколько раз они встречаются в исходной таблице. Пример результата - G1:H8Gen111
Sub t() Dim d As Object, r As Range, rr As Range, a(), x Set d = CreateObject("scripting.dictionary") Set r = Range("a1:e5"): Set rr = Range("g1") a = r.Value For Each x In a If Not IsEmpty(x) Then d.Item(x) = d.Item(x) + 1 Next rr.Resize(d.Count).Value = Application.Transpose(d.keys) rr.Resize(d.Count).Offset(, 1).Value = Application.Transpose(d.items) End Sub
[/vba]
Quote (Gen111)
Наверно неточно объяснил.
наверно
[vba]
Code
Sub t() Dim d As Object, r As Range, rr As Range, a(), x Set d = CreateObject("scripting.dictionary") Set r = Range("a1:e5"): Set rr = Range("g1") a = r.Value For Each x In a If Not IsEmpty(x) Then d.Item(x) = d.Item(x) + 1 Next rr.Resize(d.Count).Value = Application.Transpose(d.keys) rr.Resize(d.Count).Offset(, 1).Value = Application.Transpose(d.items) End Sub
Согласен с Вами, что может быть небыстро. Но,увы, ограничения таковы. Поэтому и спрашиваю, как объединить много столбцов в один. Остальное понятно.
Согласен с Вами, что может быть небыстро. Но,увы, ограничения таковы. Поэтому и спрашиваю, как объединить много столбцов в один. Остальное понятно.Gen111
=ИНДЕКС($A$1:$E$5;(СТРОКА(1:1)-1)/ЧИСЛСТОЛБ($A$1:$E$1)+1;ОСТАТ(СТРОКА(1:1)-1;ЧИСЛСТОЛБ($A$1:$E$1))+1) данная формула для записи в столбец. подскажите пожалуйста как будет выглядеть данная формула для записи в строку? [moder]Тема закрыта. Причина: нарушение п.4 и 5q Правил форума[/moder]
=ИНДЕКС($A$1:$E$5;(СТРОКА(1:1)-1)/ЧИСЛСТОЛБ($A$1:$E$1)+1;ОСТАТ(СТРОКА(1:1)-1;ЧИСЛСТОЛБ($A$1:$E$1))+1) данная формула для записи в столбец. подскажите пожалуйста как будет выглядеть данная формула для записи в строку? [moder]Тема закрыта. Причина: нарушение п.4 и 5q Правил форума[/moder]Vlad69
Сообщение отредактировал Pelena - Среда, 14.12.2016, 00:51