Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/проверить в массиве, повторно ли обращается абонент - Страница 2 - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » проверить в массиве, повторно ли обращается абонент (Макросы/Sub)
проверить в массиве, повторно ли обращается абонент
bmv98rus Дата: Воскресенье, 24.02.2019, 12:20 | Сообщение № 21
Группа: Проверенные
Ранг: Старожил
Сообщений: 2134
Репутация: 360 ±
Замечаний: 20% ±

Excel 2013/2016
Моя мысль не может не нравится. :-) №15 сделан на основе MSQuery, фактически за исключением (`Лист1$_1`.`Дата закрытия`+2) все сделано клацанием мыши. Мне сложно вещать по русскому интерфейсу, но вкладка данные, там
выбрать сам файл, таблицу из него и далее в конце мастера выбрать пункт редактировать.
Добавить таблицу еще раз, связать поля в таблицах и там выбрать условия. Кода знаешь - совсем ничего сложного.
К сообщению приложен файл: 0576431.jpg(73.7 Kb)


Замечательный медведь, процентов на 20.
 
Ответить
СообщениеМоя мысль не может не нравится. :-) №15 сделан на основе MSQuery, фактически за исключением (`Лист1$_1`.`Дата закрытия`+2) все сделано клацанием мыши. Мне сложно вещать по русскому интерфейсу, но вкладка данные, там
выбрать сам файл, таблицу из него и далее в конце мастера выбрать пункт редактировать.
Добавить таблицу еще раз, связать поля в таблицах и там выбрать условия. Кода знаешь - совсем ничего сложного.

Автор - bmv98rus
Дата добавления - 24.02.2019 в 12:20
skais Дата: Воскресенье, 24.02.2019, 13:07 | Сообщение № 22
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 164
Репутация: 20 ±
Замечаний: 60% ±

Excel 2010
Ну тогда так. И в этом случае будет вернее назвать не повторным а провоцирующим или некачественным.
К сообщению приложен файл: 3333.xlsm(23.3 Kb)


Сообщение отредактировал skais - Воскресенье, 24.02.2019, 13:10
 
Ответить
СообщениеНу тогда так. И в этом случае будет вернее назвать не повторным а провоцирующим или некачественным.

Автор - skais
Дата добавления - 24.02.2019 в 13:07
Vladimir32 Дата: Воскресенье, 24.02.2019, 13:31 | Сообщение № 23
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
skais, и сейчас еще протестировал на большом файле, и там такой нюанс еще получился, есть обращения, где не заполнено поле "номер" - и обращение считается как повторное - а должно как еденичное, так как номера тел.не указано и такая же проблема с темой обращения(
 
Ответить
Сообщениеskais, и сейчас еще протестировал на большом файле, и там такой нюанс еще получился, есть обращения, где не заполнено поле "номер" - и обращение считается как повторное - а должно как еденичное, так как номера тел.не указано и такая же проблема с темой обращения(

Автор - Vladimir32
Дата добавления - 24.02.2019 в 13:31
skais Дата: Воскресенье, 24.02.2019, 14:55 | Сообщение № 24
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 164
Репутация: 20 ±
Замечаний: 60% ±

Excel 2010
Vladimir32 мы так до бесконечности будем решать Вашу задачу, как говорят коллеги - что еще нас там ждет?
К сообщению приложен файл: 777.xlsm(23.5 Kb)
 
Ответить
СообщениеVladimir32 мы так до бесконечности будем решать Вашу задачу, как говорят коллеги - что еще нас там ждет?

Автор - skais
Дата добавления - 24.02.2019 в 14:55
anvg Дата: Воскресенье, 24.02.2019, 17:02 | Сообщение № 25
Группа: Друзья
Ранг: Обитатель
Сообщений: 447
Репутация: 222 ±
Замечаний: 0% ±

2010, 2016
так до бесконечности будем решать Вашу задачу, как говорят коллеги - что еще нас там ждет
Вот вы и познакомились с agile. В обычной практике доработки завершаются, когда клиент устаёт платить. А тут то чего заморачиваться над анализом - всё бесплатно :) Кто ж его ценит чужое время?
 
Ответить
Сообщение
так до бесконечности будем решать Вашу задачу, как говорят коллеги - что еще нас там ждет
Вот вы и познакомились с agile. В обычной практике доработки завершаются, когда клиент устаёт платить. А тут то чего заморачиваться над анализом - всё бесплатно :) Кто ж его ценит чужое время?

Автор - anvg
Дата добавления - 24.02.2019 в 17:02
bmv98rus Дата: Воскресенье, 24.02.2019, 17:24 | Сообщение № 26
Группа: Проверенные
Ранг: Старожил
Сообщений: 2134
Репутация: 360 ±
Замечаний: 20% ±

Excel 2013/2016
Вот вы и познакомились с agile.

yes :D hands


Замечательный медведь, процентов на 20.
 
Ответить
Сообщение
Вот вы и познакомились с agile.

yes :D hands

Автор - bmv98rus
Дата добавления - 24.02.2019 в 17:24
Vladimir32 Дата: Понедельник, 25.02.2019, 08:33 | Сообщение № 27
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
skais, спасибо огромное, все получилось, всё работает!)

bmv98rus, спасибо за помощь, и разъяснение!)
 
Ответить
Сообщениеskais, спасибо огромное, все получилось, всё работает!)

bmv98rus, спасибо за помощь, и разъяснение!)

Автор - Vladimir32
Дата добавления - 25.02.2019 в 08:33
bmv98rus Дата: Понедельник, 25.02.2019, 11:43 | Сообщение № 28
Группа: Проверенные
Ранг: Старожил
Сообщений: 2134
Репутация: 360 ±
Замечаний: 20% ±

Excel 2013/2016
Vladimir32,
Если честно, то очень интересен результат по скорости с применением формулы 2 из #2 и запроса из #15 на живых данных.


Замечательный медведь, процентов на 20.
 
Ответить
СообщениеVladimir32,
Если честно, то очень интересен результат по скорости с применением формулы 2 из #2 и запроса из #15 на живых данных.

Автор - bmv98rus
Дата добавления - 25.02.2019 в 11:43
Vladimir32 Дата: Понедельник, 25.02.2019, 11:56 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, по формуле из #2 сообщения по времени работает чуть больше 10 минут - это все таки долго, а вот что касается #15 - скорость поражает, обновляется таблица 23 секунды (специально засекал), макрос даже дольше работает - 45 секунд.
На самом деле запрос из #15 просто поражает скоростью.
 
Ответить
Сообщениеbmv98rus, по формуле из #2 сообщения по времени работает чуть больше 10 минут - это все таки долго, а вот что касается #15 - скорость поражает, обновляется таблица 23 секунды (специально засекал), макрос даже дольше работает - 45 секунд.
На самом деле запрос из #15 просто поражает скоростью.

Автор - Vladimir32
Дата добавления - 25.02.2019 в 11:56
skais Дата: Понедельник, 25.02.2019, 12:23 | Сообщение № 30
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 164
Репутация: 20 ±
Замечаний: 60% ±

Excel 2010
Vladimir32 макрос даже дольше работает - 45 секунд. - просто он использует стандартную сортировку два раза, если бы данные были в нужном виде изначально, то возможно макрос бы и победил. Однако не суть.
 
Ответить
СообщениеVladimir32 макрос даже дольше работает - 45 секунд. - просто он использует стандартную сортировку два раза, если бы данные были в нужном виде изначально, то возможно макрос бы и победил. Однако не суть.

Автор - skais
Дата добавления - 25.02.2019 в 12:23
bmv98rus Дата: Понедельник, 25.02.2019, 12:41 | Сообщение № 31
Группа: Проверенные
Ранг: Старожил
Сообщений: 2134
Репутация: 360 ±
Замечаний: 20% ±

Excel 2013/2016
Vladimir32, результат не сильно поразил, он ожидаем, хотя знатоки SQL скажут, что запрос по себе плохой и медленный. Интересно сравнить аналогичное с работой PowerQuery но anvg, молчит или некогда или не интересно.


Замечательный медведь, процентов на 20.
 
Ответить
СообщениеVladimir32, результат не сильно поразил, он ожидаем, хотя знатоки SQL скажут, что запрос по себе плохой и медленный. Интересно сравнить аналогичное с работой PowerQuery но anvg, молчит или некогда или не интересно.

Автор - bmv98rus
Дата добавления - 25.02.2019 в 12:41
krosav4ig Дата: Вторник, 26.02.2019, 03:38 | Сообщение № 32
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 852 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Интересно сравнить аналогичное с работой PowerQuery

Ну пока anvg молчит попробую я чего-нить путного изобразить
[vba]
Код
let
  Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
  Отбор =
    Table.AddColumn(
      Источник,
      "Строка",
      each let
        клиент=[Номер клиента],
        закрыто=[Дата закрытия],
        тема=[Тема обращения]
      in
        Table.First(
          Table.SelectRows(
            Источник,
            each [Номер клиента]=клиент and [Дата создания]>закрыто and [Тема обращения]=тема
          )
        )
    ),
  Повтор =
    Table.FromRecords(
      Table.TransformRows(
        Отбор,
        each Record.TransformFields(
          _ ,
          let
            r = _
          in
            {
              "Повтор",
              each try
                if ((r[Строка][Дата создания]-r[Дата закрытия]))<#duration(0,48,1,0)
                then
                  "Повторное"
                else
                  "Единичное"
              otherwise
                "Единичное"
            }
        )
      )
    ),
  #"Удаленные столбцы" = Table.RemoveColumns(Повтор,{"Строка"}),
  #"Измененный тип" = Table.TransformColumnTypes(#"Удаленные столбцы",{{"Код.обращения", Int64.Type}, {"Номер клиента", Int64.Type}, {"Дата создания", type datetime}, {"Дата закрытия", type datetime}, {"Тема обращения", type text}, {"Повтор", type text}})
in
  #"Измененный тип"
[/vba]
К сообщению приложен файл: 777-1.xlsm(34.3 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 26.02.2019, 03:40
 
Ответить
Сообщение
Интересно сравнить аналогичное с работой PowerQuery

Ну пока anvg молчит попробую я чего-нить путного изобразить
[vba]
Код
let
  Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
  Отбор =
    Table.AddColumn(
      Источник,
      "Строка",
      each let
        клиент=[Номер клиента],
        закрыто=[Дата закрытия],
        тема=[Тема обращения]
      in
        Table.First(
          Table.SelectRows(
            Источник,
            each [Номер клиента]=клиент and [Дата создания]>закрыто and [Тема обращения]=тема
          )
        )
    ),
  Повтор =
    Table.FromRecords(
      Table.TransformRows(
        Отбор,
        each Record.TransformFields(
          _ ,
          let
            r = _
          in
            {
              "Повтор",
              each try
                if ((r[Строка][Дата создания]-r[Дата закрытия]))<#duration(0,48,1,0)
                then
                  "Повторное"
                else
                  "Единичное"
              otherwise
                "Единичное"
            }
        )
      )
    ),
  #"Удаленные столбцы" = Table.RemoveColumns(Повтор,{"Строка"}),
  #"Измененный тип" = Table.TransformColumnTypes(#"Удаленные столбцы",{{"Код.обращения", Int64.Type}, {"Номер клиента", Int64.Type}, {"Дата создания", type datetime}, {"Дата закрытия", type datetime}, {"Тема обращения", type text}, {"Повтор", type text}})
in
  #"Измененный тип"
[/vba]

Автор - krosav4ig
Дата добавления - 26.02.2019 в 03:38
Vladimir32 Дата: Среда, 27.02.2019, 09:50 | Сообщение № 33
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
krosav4ig, протестировал на боевой версии (489 т.строк), по скорости работы на 1 секунду быстрее SQL запроса, очень быстро работает.
 
Ответить
Сообщениеkrosav4ig, протестировал на боевой версии (489 т.строк), по скорости работы на 1 секунду быстрее SQL запроса, очень быстро работает.

Автор - Vladimir32
Дата добавления - 27.02.2019 в 09:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » проверить в массиве, повторно ли обращается абонент (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!