Страницы: 1
RSS
Сортировка цифровых масивов и подсчет повторов
 
Имеем массивы цыфр с подкрашенными номерами. Хотелось бы их (причесать) упорядочить в своего рода таблицу доступную для визуализации подсчета
цифр.


2,3,4,7,9,13,15,19,21,25,29,32,42,45,                                                                                              
2,4,5,7,8,9,12,15,16,18,19,21,22,29,31,32,34,35,39,40,42
3,10,11,12,14,15,17,19,23,24,26,28,29,30,31,34,36,44,45
3,6,8,10,16,19,24,28,29,31,35,38,39,40,41,42
1,3,4,5,6,7,8,11,14,15,26,30,32,33,35,42,44
2,3,4,7,9,13,15,19,21,25,29,32,42,45
2,8,9,11,17,19,23,28,29,34,40,42,
3,4,7,9,10,13,16,17,21,25,26,29,40,42,45
2,11,12,15,17,18,19,23,24,34,36,40,42
1,4,7,9,11,12,15,19,21,23,24,25,27,29,35,36,37,45
9,11,17,19,23,28,29,30,31,32,33,35,37,40
1.Упроядоченую по столбцам в которых видно сколько
какая цифра в этих массивах появлялась, где           можно их посчитать каждую в своем
столбце.


1,      5,6,  8,  10,11,12,   14,   16,17,18,   20,   22,23,24,26,   27,28,30,      33,34,35,   37,38,39,40,41,43,44
1,  3,    6,      10,11,   13,14,      17,      20,      23,24,25,26,27,28,30,      33,      36,37,38,      41,43,44,45,
1,2,  4,5,6,7,8,9,         13,      16,   18,   20,21,22,      25,   27,         32,33,   35,   37,38,39,40
 2,  4,5,  7,  9,   11,12,   14,15,   17,18,   20,21,22,23,   25,26,27,         32,33,34,   36,               43,44,45
 2,            9,10,   12,         16,17,18,19,20,21,22,23,24,25,   27,28,   31,      34,   36,37,38,39,40,41,43,   45
1,      5,6  ,8,  10,11,12,   14,   16,17,18,   20,   22,23,24,   26,27,28,30,      33,34,35,   37,38,39,40,41,43,44
1,  3,4,5,6,7,    10,   12,13,14,         18,   20,21,22,   24,25,26,27,   30,31,32,33,   35,36,37,38,39,   41,43,44,45,                
1,2,    5,6,  8,     11,12,   14,         18,19,20,   22,23,24,      27,28,30,31,32,33,34,35,36,37,38,39,   41,43,44
1,  3,4,5,6,7,8,9,10,      13,14,   16,         20,21,22,      25,26,27,28,30,31,32,33,   35,   37,38,39,      43,44,45,
   3,  5,6,  8,  10,         14,   16,17,18,   20,   22,         26,   28,30,31,   33,34,         38,39,40,   43,44
1,2,3,4,5,6,7,    10,   12,13,15,   16,   18,   20,21,22,   24,25,26,27,               34,   36,      39,   41,43,44,45  


2.Или столбцы такова плана, без пропусков в столбце,
что упрощает визуальный подсчёт цифр в каждом столбце.

1 2 4 6 7
1 2 4   7
1 2 4   7
1   4   7
1       7
1       7


3.Или конечный выход вот такой строки, где:
1   2   3   4   5  
6   7  
10  
11  13  - присутствующее число
[6] [3] [1] [4] [2] [8] [6] [2] [1] [10] – сколько этого числа в столбце
Любой из 3х вариантов несет одну и туже информацию, количество цифр в столбце,
было бы очень хорошо если был бы на выходе 2 и 3 вариант вместе!!

Вот так:

4.вариант
1   2   4   6   7
1   2  4       7
1  2   4       7
1       4       7
1               7
1               7
[6] [3] [4] [1] [6]

Немного не корректно скопировалось, есть прикрепленный фал там все.
Если в точности нельзя реализовать задачу, то хотя бы как приблизица к решению её ??
 
Ужос глаза в разные стороны разъехались от такой боевой раскраски индейцев, тутова сайт по эксель а не по ворду, сходите в правила
Лень двигатель прогресса, доказано!!!
 
я понимаю что по эксель, так вот все это и надо мне в экселе реализовать . в ворде это как наглядное пособие для понятия что мне нужно получить.
 
Доброе время суток
И вы предлагаете самим создавать файл Excel для вашего решения? Пример исходных данных на листе Excel, будьте столь любезны.
 
1. Кто-то имеет массив, а кто-то не имеет...
2. "массивы цыфр с подкрашенными номерами", "Хотелось бы их (причесать) упорядочить" - кого? "для визуализации подсчета цифр" - опять не понял, кого считать собрались?...
2. В чём тайный смысл подкрашивания НОМЕРОВ? Впрочем для задачи как видно это не важно.
3. Элементарно делается на словаре - заносим все вероятно всё же числа в словарь, считаем повторы, в конце результат куда-нибудь выгружаем.
 
Цитата
Андрей VG написал: Пример исходных данных на листе Excel, будьте столь любезны.
я не очень силен в Excel но все равно попробую предоставить файл в Excelле то что я хочу. Спасибо.

Цитата
Hugo написал: Элементарно делается на словаре.
Если вас не затруднит то не могли бы в рассказать поподробнее, я не очень силен в Excel но задача у меня есть буду осваивать.Попробую предоставить файл с тем что мне хотелось бы на входе и на выходе...
Спасибо.!
 
Давайте сперва файл - когда будет видно что из чего нужно получить, тогда и можно думать как это сделать.
 
Вот, что то получилось хоть и корявенько, потом подправлю когда пойму как все это делать,
 
Не понимаю - а зачем на них смотреть?
Вот если годится так, то можно и сортировку добавить (если нужна), пока в порядке поступления:
Код
Sub tt()
    Dim c As Range, el

    With CreateObject("Scripting.Dictionary"): .comparemode = 1

        For Each c In [b5:b19]
            For Each el In Split(c, ","): .Item(el) = .Item(el) + 1: Next
        Next

        Workbooks.Add(1).Sheets(1).[a1].Resize(2, .Count) = Application.Transpose(Application.Transpose(Array(.keys, .items)))

    End With

End Sub
"Тоесть в результате мы должны увидеть сколько и каких цифр присутствует и повторяется в таблице (Массив цифр для разбора)" - смотрите.
Изменено: Hugo - 21.04.2015 10:38:28
 
Цитата
Hugo написал: Не понимаю - а зачем на них смотреть?
Ну теоретически да.!  смотреть на столбцы не  обязательно, нужен только готовый результ (итого:) и к нему привязана графа каких цифр итого:

сортировку вы меете в виду по итого каких меньше каких больше по возрастанию?
Изменено: mna7421 - 21.04.2015 11:06:18
 
вот так, мы првельно друг друга поняли ?
 
С сортировкой:
Код
Sub tt()
    Dim c As Range, el, a()

    With CreateObject("Scripting.Dictionary"): .comparemode = 1

        For Each c In [b5:b19]
            For Each el In Split(c, ","): .Item(--el) = .Item(--el) + 1: Next
        Next
        a = Application.Transpose(Array(.keys, .items))
        uSort a, 1
        Workbooks.Add(1).Sheets(1).[a1].Resize(2, .Count) = Application.Transpose(a)

    End With

End Sub


Private Sub uSort(ByRef x(), n&)
    Dim v, u&, d&, f%, st&
    If IsArray(x) Then
        f = LBound(x): d = f
        For u = f + 1 To UBound(x)
            If x(u, n) < x(d, n) Then
                For st = 1 To UBound(x, 2)
                    v = x(d, st): x(d, st) = x(u, st): x(u, st) = v
                Next
                u = d - 1: d = u - 1: If u < f Then d = u: u = f
            End If
            d = d + 1
        Next
    End If
End Sub
Выгружать можно куда угодно - можно и в заготовленную красивую рамку на другом листе, а можно и нарисовать в новом. Но это мне не интересно, дерзайте сами.
Изменено: Hugo - 21.04.2015 11:06:01
 
Спасибо вам огромное за помощь, но я не очень силен в Экселе, что мне делать с предоставленным вами кодом ?:oops:
куда мне это все теперь вставлять??:oops:
 
Есть раздел "приёмы"
http://www.planetaexcel.ru/techniques/3/59/
и  "видеоуроки" - в общем код в стандартный модуль, выполнить любым способом.
Изменено: Hugo - 21.04.2015 11:13:54
 
Спасибо!!!! :)
Пойду учится дальше!!!:D
 
Да, там в результате вижу числа с нулями...
Ну тогда как вариант перед сортировкой добавить в словарь все числа от 1 до максимального (может это число известно, а может его нужно высчитать в коде) не увеличивая подсчёт повторов, затем отсортировать.
Или начать именно с этого добавления всех чисел - тогда и сортировка вообще не нужна.
Т.к. тут есть один нам неизвестный момент - код дополнять рано.
 
Уважаемый Hugo !
Что то у меня не чего не получилось, посмотрел видео почитал и не как :(, не получается у меня применить макрос к этой таблице.
Я первый раз с этим сталкиваюсь.
Если вас не затруднит при наличии свободного времени, расскажите как надо делать в этом случае и поправьте если несложно файлик.
Изменено: mna7421 - 21.04.2015 20:29:27
 
Нечего там в файле править, нет там макросов - они не живут в xlsx!
Добавил макрос, сортировку убрал - она не нужна, если есть образцовый порядок чисел.
Запуск по кнопке GO

P.S. Диапазоны не делал динамическими, тут вроде это не нужно, забил их как выделено рамками на листе.
Но если что - можно код доработать. Но тогда и сортировку придётся скорее всего возвращать.
Изменено: Hugo - 21.04.2015 20:55:26
 
Спасибо вам большое, как вернусь домой буду пробовать
Страницы: 1
Наверх