Страницы: 1
RSS
Объединение в новую таблицу, Для получения конечных данных
 
Мне необходимо произвести расчет колличество жителей и домов на каждой улице, пораскинув мозгами я сделал сводную таблицу и увидел жителе в цифрах, но самому приходится формулу подгонять, а а вот дома в цифрах увидеть не получается, можно ли как нить ускорить сей процесс?
Вот что получилось, життелей считаю сам, а с домами не разберусь, считал через =СЧЁТЕСЛИ(A69:A88;"<>0"  ;)  


можно ли цифрами сразу вывести, как расчет по улице такой то 44 дома и 150 жителей
 
Форум по экселю, а не фотошопу. Потому картинки конечно можно для наглядности приводить (без фанатизма), но без экселевского файла аудитория помогающих резко сокращается.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
pritlex пишет: с домами не разберусь
У Вас данные не нормализованы. Вынесите номера домов в отдельный столбец (Данные - Текст по столбцам) и  постройте Сводную.
Согласие есть продукт при полном непротивлении сторон
 
Ну вы сами то проверьте число жителей выдает правильное а домов неправильное количество)
может есть другие варианты
 
Цитата
pritlex пишет: Ну вы сами то проверьте...
Сбавьте тон, pritlex!
См.:
"2.2. Опишите максимально подробно вашу задачу и желаемый результат. Желательно уточнить вашу версию Excel.
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
2.4. Не прикладывайте файлы-примеры с персональными данными..."
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Где вы увидели восклицательные знаки Мистер Z???
И таблицы что указана выше мне нужно посчитать количество домов по каждой улице, просто в цифрах сколько домов)
или проще у меня уже как уже отсортированный список  домов без повторов, разделить и пересчитать?
 
pritlex, Ваша таблица на картинке. Приложите файл эксель. Ещё раз повторю для Вас, это форум по экселю, а не по фотошопу. За Вас никто (или почти никто) не будет по картинке с нуля набирать таблицу. Вы хотите помощи, а фактически сами себе ставите палки в колёса.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
pritlex пишет: И таблицы что указана выше
1 - С вашими "фантиками" обращайтесь на форумы по фотошопу.
2 - По этому поводу вам Sanja уже подсказывал: "ознакомьтесь с правилами. Про название темы, файл-пример - не картинка как у Вас, и т.д."
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Файл есть на программерсе, внешняя ссылка.
Вот код написал...

Код
Option Explicit

Sub tt()    'коллекция в словаре
    Dim a, i&, t$, tt$, ttt$, DicD As Object, DicZ As Object
    Dim el

    On Error Resume Next

    a = Range("F3", Cells(Rows.Count, "B").End(xlUp)).Value

    Set DicD = CreateObject("Scripting.Dictionary"): DicD.CompareMode = 1
    Set DicZ = CreateObject("Scripting.Dictionary"): DicZ.CompareMode = 1

    For i = 1 To UBound(a)
        t = Split(a(i, 5), ":")(0)
        If Not DicD.exists(t) Then DicD.Add t, New Collection
        If Not DicZ.exists(t) Then DicZ.Add t, New Collection
        tt = Split(a(i, 5), ":")(1)
        ttt = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4)
        DicD.Item(t).Add tt, tt
        DicZ.Item(t).Add ttt, ttt
    Next

    For Each el In DicD.keys
        MsgBox "На улице " & el & " домов " & DicD.Item(el).Count
        MsgBox "На улице " & el & " жителей " & DicZ.Item(el).Count
    Next

End Sub

 
 
Крч:

Код
Sub tt()    'коллекция в словаре
    Dim a, i&, t$, tt$, ttt$, el
    a = Range("F3", Cells(Rows.Count, "B").End(xlUp)).Value

    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1

        On Error Resume Next: For i = 1 To UBound(a)
            t = Split(a(i, 5), ",")(0)
            If Not .exists(t) Then .Add t, Array(New Collection, New Collection)
            tt = Split(a(i, 5), ":")(1): ttt = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4)
            .Item(t)(0).Add tt, tt: .Item(t)(1).Add ttt, ttt
        Next: On Error GoTo 0

        For Each el In .keys
            MsgBox "На улице " & el & " домов " & .Item(el)(0).Count & " жителей " & .Item(el)(1).Count
        Next
    End With
End Sub
 
 
Цитата
Hugo пишет: Файл есть на программерсе
Зато здесь ни ссылки на этот программерс, ни файла. Даже после прямых намеков.
Считаю, что это не есть правильно - выглядит так, будто человек считает, что здесь людям не надо выкладывать файл - хватит с них и картинки. И по ней помогут.
pritlex, Вы действительно считаете, что выбрали правильную линию поведения? Приложить файл на другом форуме не считаете за труд, а здесь...Эх...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ну я ссылку тоже не даю - не моё...
Просто это намёк на то, что ТС тут может больше и не появится, там есть два макроса (правда первый от тёзки у меня не заработал...)
 
Приношу свои извинения всем кто был огорчен моими нападками)
вот файл кто просил, https://yadi.sk/d/a3VnkG7mcVFrq  4 метра весит так что только через шару
подскажите как и куда вставлять этот код), или мануал если имеется) офис 2013
еще раз извиняюсь)
Изменено: pritlex - 04.11.2014 20:30:01
 
Цитата
pritlex пишет: 4 метра весит
А урезать до 100К никак? Скорее всего, для понимания задачи и поиска решения не нужны все строки.
Файл не смотрел.
 
Цитата
pritlex пишет: подскажите как и куда вставлять этот код
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
разобрался что и как делать, только вот не догоню где в макросе и что прописать на сохранение и вывод файла
 
Под новый файл так:
Код
Option Explicit

Sub tt()    'коллекция в словаре
    Dim a, i&, t$, tt$, ttt$, el
    a = Range("F3", Cells(Rows.Count, "B").End(xlUp)).Value

    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1

        On Error Resume Next: For i = 1 To UBound(a)
            t = Split(a(i, 5), ":")(0)
            If Not .exists(t) Then .Add t, Array(New Collection, New Collection)
            tt = Split(a(i, 5), ":")(1): ttt = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4)
            .Item(t)(0).Add tt, tt: .Item(t)(1).Add ttt, ttt
        Next: On Error GoTo 0

        ReDim a(1 To .Count + 1, 1 To 3): i = 1
        a(i, 1) = "Улица": a(i, 2) = "Домов": a(i, 3) = "Жителей"
        For Each el In .keys
            i = i + 1
            a(i, 1) = el: a(i, 2) = .Item(el)(0).Count: a(i, 3) = .Item(el)(1).Count
        Next
    End With

    Workbooks.Add(1).Sheets(1).Cells(1).Resize(i, 3) = a
End Sub 
"д" в конце улиц не отрезал.
 
Чувак ты просто супер! я в долгу))))
Всем спасибо
Страницы: 1
Наверх