20.11.2017, 14:36 [+3 UTC]
в нашей команде: 2 271 чел. | участники онлайн: 8 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
20.11.2017, 13:56

Последний вопрос:
20.11.2017, 14:10

Последний ответ:
20.11.2017, 11:49

Последняя рассылка:
20.11.2017, 06:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
19.10.2009, 21:50 »
Stadt
Все в точку - процессор! Закрепил, и все летает. Спасибо за ссылку! [вопрос № 173404, ответ № 255552]
18.01.2017, 21:58 »
svrvsvrv
Спасибо за доступное объяснение! [вопрос № 190434, ответ № 274554]

РАЗДЕЛ • Пакет MSOffice

Установка, настройка и работа в пакете Microsoft Office.

[администратор рассылки: Megaloman (Академик)]

Лучшие эксперты в этом разделе

Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 168
solowey
Статус: 8-й класс
Рейтинг: 144
Megaloman
Статус: Академик
Рейтинг: 97

Перейти к консультации №:
 

Консультация онлайн # 191223
Раздел: • Пакет MSOffice
Автор вопроса: 1peachpuncher (Посетитель)
Отправлена: 15.07.2017, 13:43
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

передо мной стоит задача - необходимо найти все Трифные планы (столбец TP) в каждом отдельном регионе которые будут соответсвовавть следующему правилу

По каждому из указанных Destination они должны иметь одно и тоже значение Price
Если таковых не найдется то необходимо найти совпадение Price на 90% , по кажому параметру Destination (их 8 - 4 для СМС и 4 для телефонии)
Если не найдется 8 совпадений по 90%, то нужно найти хотя бы 6 сопадений полных

на выходе получится нечто следующее
есть регион и в нем есть N тарифов с совпадащими (или близкими) ценовыми параметрами по 8 категриям

Например москва
5-6 ТП которые совпадают между собой в цене по 8 категориям (пусть цена будет х1, у1, z1 и т.д.)
5-6ТП которые совпадают на 90% между собой в ценах по 8 категориям и тд

-----
 Прикрепленный файл: скачать (XLSX) » [100.9 кб]

Состояние: Консультация закрыта

Здравствуйте, 1peachpuncher!
Выбрать одинаковые ТП (Тарифные Планы) из огромной Excel-таблицы в 2256 строк и 5 столбцов, да ещё с заданной точностью вручную очень трудоёмко. Для автоматизации обработки я предлагаю применить мини-программу, написанную на языке VBScript .

VBScript имеет компактный код (12кБ всего), не требует установки среды программирования, работает в любой Windows-системе. VBScript подключается к Excel-оболочке, быстро читает данные в свой массив из XLSX-документа, затем отключается от Excel-приложения, и дальнейшую обработку (сравнение ТП-блоков) производит самостоятельно. При этом снимается ограничение режима "Только чтение" для работы пользователя с документом.

В исходной Excel-таблице много ошибок (в ячейки E694, E695, E696, E697 вписаны значения символа "Запятая" вместо числа) и недоразумений (в ячейки E66, E110, E134… вписаны нули для Телефония\ИсходящСвязь, что довольно сомнительно и вызывало ошибку деления на нуль при подсчёте относительной погрешности сравнения). Поэтому пришлось ввести в код несколько страховочных тестов и исключить из сравнения некоторые ТП с явными ошибками.
Однако, мой скрипт q191223.vbs (прилагаю) нашёл 107 одинаковых ТП по региону Москва и 115 по региону Краснодар. Скрипт формирует файл отчёта и авто-открывает его в Блокноте.

Скрипт в процессе обработки выводит много текста в прокрутке окна Командной строки. Поэтому, если Вы не окультурили свойства своего окна Ком-строки (включить кириллич шрифт, возможности копирования/вставки…), то мой скрипт предложит Вам настроить свойства. Согласитесь, и тогда Вы сможете в Cmd-окне выделять текст-фрагмент мазком по нему лев-кнопкой мыши и копировать в Буфер обмена побелевшее выделение.

По умолчанию скрипт ищет и пытается зачитать исходный документ q191223.xlsx в своей Родитель-папке. Но Вы можете легко изменить путь к докуму в 6й строке скрипта. Читать/править код скрипта Вы сможете из его контекстного меню (клик правой кнопкой мыши), выбрав команду "Изменить". В коде достаточно поясняющих комментариев, они начинаются с символа '(апостроф) до конца текущей строки. =Удачи!


Консультировал: Алексеев Владимир Николаевич (Советник)
Дата отправки: 20.07.2017, 16:56

-----
 Прикрепленный файл: скачать (ZIP) » [7.9 кб]

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 191223
Алексеев Владимир Николаевич
Советник

ID: 259041

# 1

= общий = | 18.07.2017, 03:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
1peachpuncher:

Вы обрушили на головы экспертов настолько сложный по объёму алгоритм, что решать Вашу задачу бесплатно (отложив все свои дела) вряд ли кто-то возьмётся. Я подозреваю, что Вы сами хорошо представляете, что именно Вы хотите, многое из того, что Вы подразумеваете, не описано или плохо описано в Вашем Вопросе.
Мне видится метод решения в VBScript , умеющим подключать и читать Excell-страницы. Но для начала я предлагаю Вам перезадать свой Вопрос и упростить условие. Покажите небольшой исходный документ и пример готового решения для разработки VBScript-программы.
Затем, после первого успеха можно будет наращивать сложность ветвления (типа "Если таковых не найдется то необходимо найти совпадение Price...")

Алексеев Владимир Николаевич
Советник

ID: 259041

# 2

= общий = | 19.07.2017, 12:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Megaloman:

Здравствуйте Megaloman! (Прошу извинить, Ваше Имя отсутствует в Вашей РегКарте).
Вы писали в Личной почте: "не стОит связываться с vbs, когда есть живая Еxcel таблица… Тут должен работать vba" - Я уважаю Ваше профессиональное мнение, но Вы несколько лет назад научили меня работать с vbs (большое Спасибо Вам!). А изучать vba для очень редких задач мне слишком убыточно (все языки изучать - будет каша в голове).

"ответ, похоже, надо сформировать в Excel- таблице" - я не увидел в Вопросе ограничение для выводимых данных. Мне думается, автору Вопроса надо помочь автоматизировать выборку из огромной таблицы и получить совпадающие Тарифн планы в любом виде.

Алексеев Владимир Николаевич
Советник

ID: 259041

# 3

= общий = | 19.07.2017, 12:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
1peachpuncher:

Я научил свой скрипт q191223.vbs (прилагаю) читать Ваш прикреплённый Excel-документ с неизвестным именем (сайт-программа исказила имя), я назвал его q191223.xlsx . А "Начало - это уже пол-дела".

Скрипт будет в процессе обработки выводить много данных в прокрутке окна Командной строки. Если Вы не окультурили свойства своего окна Ком-строки (включить кириллич шрифт, возможности копирования/вставки…), то мой скрипт предложит Вам настроить свойства. Согласитесь, и тогда Вы сможете в Cmd-окне выделять текст-фрагмент мазком по нему лев-кнопкой мыши и копировать в Буфер обмена побелевшее выделение.

По умолчанию скрипт ищет и пытается зачитать докум q191223.xlsx в своей Родитель-папке. Но Вы можете легко изменить путь к докуму в 6й строке скрипта. Читать/править код скрипта Вы сможете из его контекстного меню (клик правой кнопкой мыши), выбрав команду "Изменить". В коде достаточно поясняющих комментариев, они начинаются с символа '(апостроф) до конца ткщ-строки.

Если помощь ещё нужна Вам, то попросите модераторов продлить срок действия Вашего Вопроса. Я допишу код чтения блоков по 8 строк из Вашего докума. Каждые 8 Ваших табли-строк описывают 1 ТП (Тарифный План). 2256 строк (исключаем заголовок) - это 282 ТП. В каждом из 282 ТП-блоке много избыточных ячеек. Можно выпарсить нужные данные, сравнить их и вывести результат в Блокноте или html-файле. А можно просто зачитать окончание Cmd-вывода. Что Вы предпочитаете?

-----
 Прикрепленный файл:  скачать (ZIP) » [2.7 кб]

Megaloman
Академик

ID: 137394

# 4

 +1 
 
= общий = | 19.07.2017, 15:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Алексеев Владимир Николаевич:

Продлил

=====
Нет времени на медленные танцы

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14164 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн