Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2010, 11:14   #1
supergood
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 32
По умолчанию Подсчет повторных

Добрый день.
Просьба к спецам помочь автоматизировать файл. Цель подсчет повторных.Если оставить как есть формулами и забросить массив на 10 000 строк книга начинает долго висеть да и объемы ее значительно увеличиваются. Просьба помочь в написании макроса. Логика записана в столбцах y,z,aa.
Вложения
Тип файла: rar Хелп.rar (2.9 Кб, 21 просмотров)
supergood вне форума Ответить с цитированием
Старый 15.09.2010, 11:49   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

С этим не перекликается? Там как раз монстров обрабатывали...

http://www.programmersforum.ru/showthread.php?t=112444
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.09.2010, 12:06   #3
supergood
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 32
По умолчанию

Похоже, но не совсем.
supergood вне форума Ответить с цитированием
Старый 15.09.2010, 12:08   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Если похоже - может можно тот код переделать.
Просто по Вашему примеру я не понял, что конкретно надо, и по каким ячейкам смотреть повторы.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 15.09.2010, 12:37   #5
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от supergood Посмотреть сообщение
Добрый день.
Просьба к спецам помочь автоматизировать файл. Цель подсчет повторных.Если оставить как есть формулами и забросить массив на 10 000 строк книга начинает долго висеть да и объемы ее значительно увеличиваются. Просьба помочь в написании макроса. Логика записана в столбцах y,z,aa.
Здравствуйте.
Автоматизировать можно тремя способами:
1. Изменить формулы на более "быстрые".
2. Применить макрос
3. Применить сводную таблицу.

Я выбрал третий (см. вложение) из-за простоты в применении и быстродействия.
Если удалить из Вашего файла все формулы и заполнить информацией 10000 строк, то пересчёт сводной визуально не заметен. Так же будет и на целом листе.
Вложения
Тип файла: rar supergood.rar (5.4 Кб, 17 просмотров)
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 15.09.2010, 12:59   #6
supergood
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 32
По умолчанию

Логика следующая.
1. В первую очередь идет округление времени до 5 мин. То есть если дата регистрации 12:27:30 округляем до 12:30. Если дата регистрации 12:27:29 округляем до 12:25.
2.Дальше если адрес+сервис+время совпадает в дальнейший анализ берем только один из этих адресов.
3.Следующий этап подсчет повторных обращений по данным полученным по алгоритму описанному в п2.
4.Если адрес опредилен как повторный то в столбец АА нужно вывести значение столбца содержание, но толькодо точки "."
supergood вне форума Ответить с цитированием
Старый 15.09.2010, 13:01   #7
supergood
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 32
По умолчанию

Однозначно нужен макрос. Помогите
supergood вне форума Ответить с цитированием
Старый 15.09.2010, 16:30   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Половину сделал. Подрихтовал тот код по ссылке выше. Пока сделал отбор уникальных с учётом времени в другой файл, посмотрите, может так будет удобнее. Но можно и в этот же рядом выгрузить - так же слитно или как с формулами - с пустотами.
Вторая часть вопроса пока откладывается, может вечером будет время. Только поясните - пометку о сверке надо в первое упоминание адреса писать? Тогда может сделать ещё один аналогичный список уникальных адресов?
Вот с Улица1 6 30 непонятно - встречается 5 раз, пометка стоит 2 раза, но не у первого упоминания...


Код:
Option Explicit

Sub FindUnique()

    Dim i As Long, ind As Long
    Dim d As Scripting.Dictionary
    Dim arr1, arr2, rng As Range, x As Long, temp As String
    Dim tm, ttime, sec_, time_, z
    
        tm = Timer

    Set d = New Dictionary
    Set rng = Range("A2:N" & Cells(Rows.Count, 1).End(xlUp).Row)
    arr1 = rng.Value
    ReDim arr2(1 To UBound(arr1), 1 To 5)
    x = UBound(arr1, 1)
    For i = 1 To x
    ttime = arr1(i, 10)
    If Val(Format(ttime, "ss")) >= 30 Then sec_ = 1 Else sec_ = 0
    z = Round((Val(Format(ttime, "nn")) + sec_) / 5) * 5
    time_ = Format(ttime, "hh") & z
    temp = UCase(CStr(arr1(i, 4) & arr1(i, 5) & arr1(i, 6) & time_ & arr1(i, 14)))
        If d.Exists(temp) Then
            'arr2(d.Item(temp), 3) = arr2(d.Item(temp), 3) + 1' это пока не нужно
        Else
            ind = ind + 1
            d.Add temp, ind
            arr2(ind, 1) = arr1(i, 4)
            arr2(ind, 2) = arr1(i, 5)
            arr2(ind, 3) = arr1(i, 6)
            arr2(ind, 4) = arr1(i, 10)
            arr2(ind, 5) = arr1(i, 14)
        End If
    Next i
'    rng.Offset(, 7) = arr2
With Workbooks.Add
With .Sheets(1)
.[a1].Resize(UBound(arr2, 1), UBound(arr2, 2)).Value = arr2
End With
End With
    MsgBox "Время выполнения макроса составило " & Timer - tm & " сек.", vbExclamation, ""

End Sub
P.S. Исправил чуть код - про сервис забыл...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 15.09.2010 в 16:52. Причина: Исправил чуть код - про сервис забыл...
Hugo121 вне форума Ответить с цитированием
Старый 15.09.2010, 18:06   #9
supergood
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 32
По умолчанию

Выгрузить желательно туда же как и показано в примере с формулами. По второму вопросу:
По вложенному примеру, первый раз я не отсортировал по времени, прошу прощения.Выложил исправленный вариант
Вложения
Тип файла: rar Хелп.rar (8.4 Кб, 13 просмотров)
supergood вне форума Ответить с цитированием
Старый 15.09.2010, 18:10   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Опять непонятно - почему теперь все "в анализ попадают"?
И опять Улица1 6 30 четыре раза на сверке платежей... Не пойму логику.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access 2003. Как исключить ввод повторных данных в форме ? MAN5ON Помощь студентам 0 19.06.2009 23:23
подсчет checkboxов balamut Компоненты Delphi 2 05.02.2009 17:07
Проблема с чисткой повторных записей Shouldercannon Общие вопросы Delphi 2 19.12.2008 18:21
как исключить добавление повторных записей в таблицы? Demonk Microsoft Office Access 3 27.11.2008 10:30
Подсчет r2n Общие вопросы Delphi 4 01.05.2007 05:48