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

Вход

Регистрация

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

 

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

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

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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

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
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

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

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

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

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

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

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

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
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

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

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

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

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

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
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

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

Автор - skais
Дата добавления - 25.02.2019 в 12:23
bmv98rus Дата: Понедельник, 25.02.2019, 12:41 | Сообщение № 31
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

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
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 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
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 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-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!