Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Условное форматирование Гистограмма на основании значений других ячеек
 
Цитата
написал:
Но осторожно.
Да спасибо!
Тут с утра еще и вводные поменялись - "хотим теперь радугу" (разные цвета в одной ячейке).
Поэтому ушел грызть вывод фигур. :)
Спасибо Вам за помощь и, пользуясь,  случаем - поздравляю с наступающим Новым Годом!
Здоровья, Любви, всех благ и удачи в проектах!  
Условное форматирование Гистограмма на основании значений других ячеек
 
Цитата
написал:
Только если переносить значения в формат
Оригинально!
Спасибо!

Думаю, вопрос закрыт.
Условное форматирование Гистограмма на основании значений других ячеек
 
Добрый день!

Столкнулся с интересной задачкой.
Есть лист 1, на котором текстовые данные.
Макросом я могу для каждой ячейки посчитать некую метрику и записать ее в ячейку с таким же адресом, но на другом листе (Лист2).
Задача состоит в том, чтобы сделать условное форматирование гистограммой на ячейки Листа1 так, как будто бы каждая из них содержит не текст, а значение ячейки с таким же адресом на листе2.  

Сделал упрощенный пример. Мой макрос здесь не причем, поэтому
во все ячейки Лист 1 просто вбил один и тот же текст "Hello", значения на лист2 - руками заполнил несколько ячеек. Представим, что их написал макрос.
На листе2 понятное дело условное форматирование гистограмма делается за 5 сек.
А вот как такую же картинку получить на Лист1 - никак не могу.
Пробовал уже и макросом, и значения подпихивать из массива, и формулу, и даже внаглую
   Cells(1, 1).FormatConditions(1).Formula = "Лист2!A1"
   Cells(2, 1).FormatConditions(1).Formula = "Лист2!A2"
   Cells(3, 1).FormatConditions(1).Formula = "Лист2!A3"

но что-то не получается.

Вот сделал нечто близкое
На листе "Look hh"  условно форматируются первые 4 ячейки столбца A в зависимости от значений таких же ячеек на листе "hh".

Но мне нужно именно гистограмма условного форматирования (как на листе2), т.к. цвет менее информативен. А рисовать кучу фигур в ячейках как то не очень хочется, там наверняка какие-нибудь грабли повыползают.

Буду благодарен за любые идеи.
Задача о Ранцах, Нужна консультация по возможностям алгоритмов раскроя материала.
 
Чтобы сэкономить кому-то время, обозначу сразу:
Базовый бюджет 2 т.р.
Бюджет времени: думаю, час-полтора.
Но, в принципе, все обсуждаемо. Без фанатизма :)

Технология изготовления несколько замороченная, поэтому для упрощения решил изложить задачу в контексте всем известного рюкзака,
который грабителю ювелирной лавки нужно наполнить максимально полно.
Сформулировал несколько кривовато, но исключительно для ускорения примерного понимания сложности задачи и чтобы отсеять "школьников".
С конкретным исполнителем-консультантом, есть смысл обсуждать реальную задачу.
Предполагается наличие у консультанта опыта решения задач о мульти-рюкзаках, т.к. простую/банальную  моно-задачу раскроя я могу решить и сам.
Публичный макрос MCH уже поюзал (кстати, очень понравился). Пару лет назад на c#  делал задачу раскроя с помощью библиотеки OR-Tools от гугла.
Но, к сожалению, глубоко не погружался в саму механику алгоритмов (динамическое программирование, ветвей и границ и прочих).
Сейчас для себя определил 2 возможных пути решения. Но прежде, чем приступать, думаю нелишним будет часок пообщаться с кем-то поопытнее меня в данном вопросе.
Ведь могу получить бесценные советы в плане выбора алгоритма или хотя бы тактики его поиска.
Непосредственно исполнителю программировать ничего не надо - это просто беседа-консультация.


Итак сама задача

1 Есть 10 Рюкзаков типа А и 10 Рюкзаков типа Б

2 Каждый Рюкзак состоит из 5 отделений.
3 Каждый Рюкзак может быть настроен на одну (единую для него) ширину отделений.

4 Рюкзак типа А может быть настроен на ширину отделений 10 или 15 см
5 Рюкзак типа Б может быть настроен на ширину отделений 15 или 20 см
6 Ширина отделения никак не меняет их длину и количество в рюкзаке.

7 Слиток можно класть только в отделение точно такой же ширины как и он (не больше, не меньше,
т.е. это несколько необычный слиток, а скорее какой-то железнодорожный вагончик, с конкретной шириной рельсов).

8 Длина всех отделений Рюкзака А 50 см, Рюкзака Б = 60 см. Длина слитков кратко меньше, и разная.
Другими словами, внутри одного отделения стоит банальная задача линейного раскроя.
Сложность именно в том, что сами Рюкзаки то - с настраиваемой шириной отделений, что и добавляет комбинаторику, но на более высоком уровне.

9 Слиток характеризуется длиной, шириной (10, 15 или 20 см) и материалом (бронза, серебро и золото).

10 Набор слитков из указанных выше материалов четко задан (т.е. их не бесконечное множество; в реальности это уже полученные заказы клиентов).


Так как для простоты изложения реальная задача приведена к ранцу, следующие моменты могут показаться бредом в физическом смысле.
Но будем считать это игрой, поэтому просто таковы ее правила:

11 Каждое отделение можно заполнять только одним материалом - либо золотом, либо серебром, либо бронзой, либо ничем (это выгоднее, чем заполнить отделение наполовину).
Можно представить, что отделение - это литейная форма-дорожка, которую потом полностью заливаем нужным металлом, и потом только распиливаем на слитки.
И здесь есть пара нюансов:

11.1 В отличие от обычного распила трубы неиспользованный остаток пропадает навсегда, т.е. после распила остаток (даже большой) не представляет никакой ценности. И это - огромные потери!

11.2 Предыдущий пункт вынуждает использовать два недешевых выхода из ситуации:
А) за свой счет (т.е. с резким падением прибыли) изготавливать часть деталей из обрезков более дорогого материала. Но это все равно выгоднее, чем выбрасывать неиспользованный обрезок.
Б) если же для обрезка не удается подобрать уже заказанную деталь - изготавливать деталь на будущее ("на склад"), но он уже итак доверху забит этими неликвидами.
   Поэтому с точки зрения описанной модели ценность такого слитка "на потом" будет тарифицироваться на 50% дешевле (выгоднее чем просто выкинуть, но еще выгоднее подобрать из заказанных).

Типичная ситуация - это когда при любых комбинациях получается, что есть одно отделение, наполовину заполненное золотом, и одно наполовину заполненное серебром.
Соответственно, обрезки (читай - потери) - космические. Поэтому приходится как бы пере-изготавливать серебренные слитки из золота, и компоновать одно общее отделение из золота.


Цель как и всегда - найти самое прибыльное решение - сколько Рюкзаков использовать, на какую ширину отделений настроить каждый из них,
какие отделения не использовать совсем (не выгодно), какие детали изготовить из более дорого материала.

К сожалению, данный пример не учитывает еще ряд моментов в реальности решаемой задачи, которая совсем не рюкзак,
а скорее раскрой (т.е. есть отходы, более того - они очень критичны.


Но основную суть задачи я вроде бы описал.
Если у Вас есть опыт решения таких комбинированных задач и Вы готовы пообщаться со мной на эту (вернее уже реальную) тему часа полтора - пишите.
Созвон по скайпу или зуму - чтобы я мог показывать экран.
траблы с unicode
 
Цитата
написал:
Если у вас есть функция ЮНИСИМВ()см. файл
Павел, большое спасибо!
У меня файл работает.
Удачного Вам дня!
траблы с unicode
 
Цитата
написал:
Вы судя по всему писатель, а не читатель.
Еще раз -  я не дома, доступ к компу получил на несколько минут - их потратил, чтобы ответить на первое сообщение, и то успел отправить буквально за секунды. Проэксперементировать с вашим физически не успел. Таковы обстоятельства.
Сейчас  выдалась минутка - попробовал - то что нужно. Спасибо за помощь!
траблы с unicode
 
привет всем!
коллеги, спасибо за помощь!
прошу прощения за молчание - внепланово оказался в дороге, без своего компа и связи.
сейчас нашел способ глянуть форум. Скоро обратно поедем.


Файл я вкладывал - вернее перетаскивал драг энд дропом - но вижу, что его почему то нет.

Цель была - просто сделать сплит по буллиту. Пока выкрутился сплитом по коду (10) - в принципе работает.
Но вопрос все равно актуален, т.к. к примеру надо символ рубля идентифицировать (Р с черточкой)
Сейчас глянул - он тоже код 63 возвращает.
Изменено: Alex-M - 18.02.2024 08:26:45
траблы с unicode
 
Привет всем!
Про проблематику с unicode тему-сборку прочитал и ни раз, но мало что понял. В общем для меня эта тема упорно сложная.

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

Поэтому если кто поможет коротким советом с конкретным файлом, сокращенным мной до 1 ячейки - буду благодарен.
Изменено: Alex-M - 16.02.2024 22:27:23
[ Закрыто] Вопросы от old-скульного Excel-щика
 
Добрый день!
Всех с наступившим Новым Годом!
Здоровья и удачи во всех делах!

Как известно, новый год - очередной шанс что-то поменять. Вот и я решил попробовать что-то новое.

Сам Excel изучил где-то в 1998 - сразу после института. Изучил хорошо, использую каждый день.
VBA освоил многим позже. Дома несколько компов. Т.к. придерживаюсь концепции
"любой хаос должен быть однообразен" на всех компах стоит
win10 pro и 32битный офис 2013. Ну чтобы не ловить глюков/разночтений в макросах,
в которых иногда используются всякие там директивы, в которых я не сильно секу.

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

Буду благодарен, если кто-то компетентный подскажет:
1. Все-таки можно одновременно юзать на одном ПК 2013 и 2021 Excel? Ну чтобы постараться сделать переход мягким.
2. Какой сейчас наиболее дешевый из относительно честных способов получения лицензии офиса 2021 без троянов и риска
    дискредитировать свой ЛК майкрософт, в котором все-таки куча лицензий. Хотя понимаю куда идет этот мир и что никаких прав
    российских потребителей США соблюдать не будет.
 
QUIK API TRANS2QUIK
 
Привет всем!

К торговому терминалу QUIK есть API TRANS2QUIK.dll

Раньше она была версии 1.2, сейчас 1.3

Для 1.2 есть примеры на VBA Excel, но я так понимаю, что они уже не стыкуются с текущей версией QUIK.
Версия 1.3 вроде как актуальная, но в ней нет примеров на VBA Excel.
Хотя разработчики QUIK уверяют, что пример из 1.2 подойдет.


Потыркался сам с часок - что-то не сильно продвинулся. :(

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

Всем удачного дня!
Нажать кнопку на сайте трейдингвью
 
Олег, спасибо за оперативность!

Прим. Олегом был предложен вариант лучше моего (не через файл, сразу запросом) - в итоге все стало в разы лучше!
Изменено: Alex-M - 11.06.2021 09:07:37
Нажать кнопку на сайте трейдингвью
 
Добрый день!

На сайте https://www.tradingview.com/screener/ нужно силами VBA нажать кнопку "Export screener data to a csv file" (кнопка "скачать" - со стрелочкой вниз).

Темы по этому вопросу на данном форуме прочитал, и сам вроде неплохо пишу на VBA, но в вебе - совсем дуб. Я даже что искать то в коде страницы не понимаю.
"И где же у него кнопка?" ;)

В общем, вынужден обратиться за помощью. Ибо реализованное решение (щелкать мышкой в нужную точку экрана по ее координатам) не очень стабильно работает - если я начинаю перетягивать окно браузера между мониторами.

Алексей
Ошибка при использовании ChartDirector
 
Doober, "Семен Семеныч ! ;)
Видимо, это из-за того, что я с сом-объектами никогда не работал.

Спасибо!
Ошибка при использовании ChartDirector
 

Привет всем!

Коллеги, нужна ваша помощь.

Для более эффективного рисования диаграмм скачал внешний компонент ChartDirector. Имхо очень достойно сделан. Вот только у меня руки, видать, кривые. Т.к. примеры работают, но как только я пытаюсь сделать что-то аналогичное – почему-то не получается.

Поэтому сдаюсь и прошу о помощи. Если надо - на возмездной основе, к примеру  1 т.р., т.к. подозреваю, что ответ скорее всего до смешного прост.

Итак, последовательность действий.

1.       К сожалению, сначала надо поставить вышеуказанный внешний компонент. Понимаю, что это не айс, но по-другому никак.
http://www.advsofteng.com/download.html
ChartDirector for ASP/COM/VB , Software and Documentation

2.       Потом берем тестовый файл «cd_excel_demo4», выложенный техподдержкой. Он прекрасно работает. Для этого файл надо открыть и на листе Sheet1 в 18й строке в одной из ячеек поменять циферку. Диаграмма (вернее, рисунок) тут же перерисуется. Здесь все ок.

3.       Потом берем файл «Мой тест2», в котором, по сути, находится тот же самый код. Но почему то он не работает.

Поможите, люди добрые – подскажите, где я туплю.

Кстати, кто знает – как Excel определяет «язык» файла (т.е. создает ли он Диаграмма1 или Chart1)? Это, конечно, не ответ на мою проблему, но просто интересно.

Про повторяющуюся часть кода в нескольких макросах
 
давно я вебил, могу ошибаться. поэтому не бейте.

между вставкой "цитаты" и подпрограммой - есть некое отличие. вставка  - работает как копир - тупо вставляет текст как есть.
а подпрограмма - она уже не тупая вставка, а интеллектуально-логическая и, к примеру, может потребовать задекларировать используемые в ней переменные (если соответствующая опция включена, что крайне рекомендуется особенно новичкам). Безусловно, проблема решается глобальным описанием переменных, что даже не так сильно портит код, но лично мне в VBA include тоже не хватает  - иногда так хочется не глобалить переменные, а размер текста сократить.
Но это так - далеко не самые принципиальные моменты...
Создание своих нестандартных диаграмм
 
Максим, возможно и можно, но проделав это пару раз мне данный процесс показался достаточно трудоемким.
Поэтому я и задался вопросом - а нет ли пути попроще?
chartdirector запустил, но пока изучил его не детально и цена, конечно, кусается :(
Но я опасаюсь, что рано или поздно попаду в ситуацию, когда штатными средствами не выкручусь. Поэтому и ищу.
Вы случайно, не знаете аналога chartdirector?  
Создание своих нестандартных диаграмм
 
ну, например, как на картинке.

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

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

Заранее благодарен за любую помощь!
Корпоративный стандарт: Excel 2013 vs 2016, выбор версии Excel
 
Доброго времени суток!

Ситуация обычная - в компании зоопарк версий офиса и хочется привести все к единому стандарту. Выбор идет между 2013 и 2016.
Лично для меня важна стабильность и скорость работы с VBA и большими файлами. Но, не смотря на то, что компания достаточно крупная (несколько сотен пользователей), вынужден признать, что таких как я - единицы.

Пока склоняюсь оставить 2013, т.к. есть ряд макросов, написанных на нем, и не хочется ими рисковать. А те новшества, что есть в 2016 - имхо не такие существенные + далеко не все партнеры имеют 2016, т.е. существуют риски отправки, к примеру, новых диаграмм, которые партнер открыть не сможет. Начнутся лишние вопросы...

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

- каковы на ваш взгляд 1-2 самых значимых плюса и минуса в переходе на 2016?
- ну и главное лично для меня - что возвращает функция isVBAProblem для аргументов: скорость, стабильность, совместимость? ;)

Заранее благодарен за любую помощь!
Изменено: Alex-M - 29.03.2017 09:28:38
Открытие кода модуля в текущем окне
 
КОЛЛЕГИ, ОГРОМНОЕ ВАМ, КАСКАДНОЕ СПАСИБО!
............................................................КАСКАДНОЕ СПАСИБО!
........................................................................КАСКАДНОЕ СПАСИБО!
Помогло!            :)

Вот что значит, садиться кодить не проснувшись! ;)

Удачи вам!

P.S. Очередное "не верь глазам своим", т.е. окна и раньше были новые, просто действительно закрывали все остальные :).
Защита VBA кода. Новое решение - VBACompiler
 
Привет всем!

Рано или поздно, почти каждый разработчик сталкивается с вопросом защиты своего кода от нежелательного распространения.
Данная тема поднимается периодически. На мой взгляд, самая толковая информация была здесь - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=45829&TITLE_SEO=4...

На ее основании я остановил свой выбор на DoneEx. Немного погонял - вроде работает четко. Нравится максимальный уровень защиты. Не нравится то, что это предполагает распространение своих наработок в виде exe-файла. Все-таки не каждый решится использовать чужой exe (хотя, с точки зрения злодеяний - навредить можно  и VBA-кодом, но его хотя бы можно отключать). Да и размер файла большой. В общем, exe-формат как-то напрягал. Но за неимением лучшего, решился все-таки на приобретение решения от DoneEx.

И вот захожу я на http://doneex.com/ дабы оплатить это чудо (в хорошем смысле), как вижу новую кнопочку - мол есть новый продукт.
Перехожу на http://vbacompiler.com/, изучаю (сайт пока что откровенно лаконичен).
Решение - давняя моя (и не только) мечта - макросы (вернее их Си-версия) переносятся в DLL-ку!

А мне как раз срочно надо распространить один свой файл, но только так чтобы он дальше не пошел. В итоге я на эмоциях и цейтноте решился сразу взять новый продукт. Все-таки решение гораздо красивее и логичнее. К сожалению, именно мой файл он "кушать" отказался, даже после исправления мной пары ошибок. Выслал разработчикам - все-таки бетта-версия. Уже через сутки прислали ссылку на новый релиз. Теперь компиляция проходила успешно. Но во время работы файл "падает". Еще причину не понял, но пока грешу на себя - возможно, где-то обнуляющие set-ы не использую, плюс у меня для он-лайн обновления данных используется несколько кривое, поспешное решение через постоянный запуск процедуры самой себя через OnTime. В общем буду искать ошибки и помогать разработчикам. С учетом того, что они смогли сотворить в первом своем продукте - в успехе даже не сомневаюсь.

О результатах обязательно проинформирую. Все-таки выход практически компилятора VBA считаю значимым событием. Хочу также убедить разработчиков добавить функцию не изменять (не шифровать) имена процедур/функций, т.к. я бы лично значительную часть своих вспомогательных библиотек с большой радостью таскал не в коде, а в виде DLL. Даже не защиты ради, а ради облегчения взгляда на код.
Открытие кода модуля в текущем окне
 
Добрый день.
Сильно не бейте и не смейтесь - и на старуху бывает проруха. :(
Программирую на VBA несколько лет, и органически привык к тому, что при двойном щелчке имени модуля у меня в окне редактора появляется его код, скрывая (как минимум - визуально) код модуля, который я редактировал до этого.
Вчера переустановил офис. Сегодня срочная работа, а я уже 40 минут борюсь с тем, что при двойном щелчке имени модуля его код выскакивает в новом окне. Этот каскад окон дико раздражает и отвлекает от работы.
Галки всякие потыкал, руководство прочитал - не помогло.
Поможите, пожалуйста, люди добрые. ;)
Ускорение работы в офисных программах с помощью программируемых кнопок игровых мышек
 
Владимир, в очередной раз - Спасибо!
Вот и я думаю, что теоретически все срастается, посмотрю что получится на практике.
Ускорение работы в офисных программах с помощью программируемых кнопок игровых мышек
 
Ситуация банальна - пришла пора купить мышь, ибо обе (на работе и дома) лоджитечки 705 как то вдруг одновременно приказали долго жить.
К мышке привык, но т.к. покупал недавно и в аккурат на пике курса, то решил применить "ответные санкции" и устроить конкурс, а не просто автоматом взять ту же модель.
Беглый просмотр обзоров натолкнул на мысль пересмотреть свое отношение к программируемым кнопкам.
Так как именно благодаря этому форуму научился более-менее кодить макросы, и даже уже начал хулиганить в outlook, то вот решил здесь и задать свой вопрос:

имеет ли кто-нибудь практику использования программируемых кнопок мышки (к примеру лоджитеч g600) для вызова часто используемых команд или макросов, своих или plex?

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

Или же я перемудриваю?
Куплю книги по VBA Excel 2007. Дорого.
 
vikttur, честно признаюсь - ко второй "корке" я уже подбирался в режиме "быстрая перемотка" - фиксировал в голове только принципиальные моменты, сам код не запускал и не тестировал. Но большую часть книги действительно прошел достаточно детально.
У каждого свой стиль изучения материала - мой это изучать 1-2 лучших материала по предмету именно "от корки до корки". Это в конечном счете экономит потом кучу времени. Хотя на вкус и цвет...
Куплю книги по VBA Excel 2007. Дорого.
 
Kuzmich, я этот сайт уже излазил вдоль и поперек. Или это намек на то, что можно им написать и они помогут? Сомневаюсь (но написать-написал :)). Мне взялся помочь один из посетителей форума - книга есть у его знакомого, но он в командировке. Появится - попробуем договориться.

Я тут как раз на днях закончил читать Профессиональное программирование 2007 Уокенбаха. Вещь! Она не сразу ко мне попала, поэтому для организации на всякий случай ранее купил еще доступную по 2010 версии. Сейчас сравнил - действительно 99% совпадений. Но я все-таки сторонник "оригинальных запасных частей". :)

А сегодня мне передали из Саратова книгу "Формулы Excel 2007" Уокенбаха - я терроризировал сеть магазинов Читай город больше месяца! В конце концов замучил всех и где то в закормах они таки нашли последний экземпляр этой книги. Сейчас бегло полистал - оно того стоило! Допускаю, что в этой же книге 2010 тоже 99% совпадений (а может даже что-то есть и более свежее, и при этом работающее в 2007), но 1 книга - хорошо, а 2 лучше. Организация большая, так что лишними точно не будут. К сожалению, уровень знания Excel в компании не очень высокий - хочу это исправить.

Вот осталось таки по Джелену договориться - и моя "хаполка" будет совсем счастлива :).

Ребята, спасибо за помощь!
Удаление строки по 2 условиям
 
ZVI, спасибо! Видимо, я вчера уже "поплыл" и пропустил этот момент, возможно из-за того, что что-либо писать в ячейки воспринимал как прямой риск сделать процедуру еще дольше. Сейчас понимаю, что если формулу прописать с умом, то получится очень даже ничего - то что и надо.
Спасибо!

Hugo, из txt итак берутся данные, которые нужны. Проблема в том, что эти данные могут в течение 1-2 недель корректироваться (задним числом) и мне надо каждый день просто перезаливать последние 2 недели.

Я подозреваю, что рано или поздно я столкнусь или с проблемами со скоростью (вернее это произошло уже сейчас, но они пока решаются, т.к. причина в моих кривых руках) или упрусь в количество строк на листе Excel. Понятно, что сегментированием проблему можно будет отсрочить, но рано или поздно это может стать серьезной преградой - все-таки Excel не база данных. Но здесь хорошие новости в том, что я сам управляю глубиной истории в данных и как только начну упираться в предел емкости или производительности - просто отрежу 1 квартал. А сейчас именно Excel + макросы дают мне беспрецедентное удобство в создании прототипа будущей серьезной системы (она будет на 1С). Это такой новый вид написания технического задания для программистов 1С - вместо "вот наброски на бумаге как это примерно может выглядеть" получаем "вот вам работающий код на VBA - сделайте тоже самое в 1С" :).

Спасибо Вам за помощь!

Ребята, вы реально делаете очень благое дело!
Сейчас посмотрел во скольких темах в людям помогаете - реально круто!
МОЛОДЦЫ!
Удаление строки по 2 условиям
 
Цитата
Этот макрос написан для анализа одного столбца.
Если нужно анализировать сразу несколько столбцов - тогда почти половину кода нужно переписывать.
Цикл For Each нужно менять на for x= n to m, чтоб привязаться к другому массиву.
Сейчас реализовывать некогда...

Да я что-то такое подозревал. Сейчас тоже голова уже не варит. Попробую посмотреть еще раз модицикации макроса автором на другие темы, по-моему там было несколько колонок. Но самая шальная мысль была изначально - тупо создать для столбца дат массив-зеркало, который бы подглядывал на индекс основного массива, подсказывал ему что там с датой по этой же строке и при этом полностью бы дублировал все действия с индексами/размерами основного массива. Вся проблема опять-таки в законе подлости - именно массивы я не изучил детально и кое-какие моменты перевода мысли автора даются с трудом. Как говорится, будем искать :) Вот нюхом чувствую, что буквально парой фраз тут где-то должно быть счастье - уж очень не хочется менять макрос на другой - там ведь тоже могут быть свои грабли. Жаль что в копилке идей так и не появилось "самого правильного макроса для удаления строки по нескольким критериям" :)
Огромное спасибо за поддержку!
Удаление строки по 2 условиям
 
Цитата
А точно макрос нужен?
Обычным фильтром это делается в три щелка.
точно. каждый день несколько десятков отчетов из 1С будут экспортироваться и обрабатываться. В ручную это просто не реально.
Удаление строки по 2 условиям
 
Прекрасно понимаю, что самый быстрый способ быть посланным в сад в поиск - это создать тему или даже вопрос на тему "поиск сроки с условием". Поэтому последние 3-4 часа копался сам. Около 20 тем есть только на этом форуме. Тем не менее, то ли лыжи..

В общем, вынужден снова попросить вашей помощи.

Описание задачи:
На листе есть несколько сотен тысяч строк. Пустых строк нет. Надо организовать быстрое удаление строк при одновременном выполнении двух условий: 1) в указанной колонке есть слово "Все". 2) поле Дата данной строки (колонка С) не должна быть меньше "даты зачистки" DateFrom.
При этом, условие 1) имеет некую особенность - если макрос вызывается для колонки В (артикул товара), то вместо слова "Все" при вызове процедуры используется слово "_CSKU". В этом случае удалению подлежат все строки, в которых число в колонке CSKU >= 1 000 000. При этом второе условие (дата) также должно выполняться.

Таким образом данная часть макроса должна вырезать сводные данные начиная с некой даты. В последующем сводные данные по всем складам будут снова перерассчитаны и перезалиты на данный лист. Хотя наверное, это уже лишняя информация  :)  .

К сожалению, подавляющее большинство примеров не учитывает скорость работы макроса, и в результате работает со скоростью 200..5000 строк в минуту. В итоге 600 000 / 5000 - получаем вечность. Но подходящее решение было найдено в виде ссылки на этом форуме http://www.sql.ru/forum/722758/udalenie-strok-v-bolshom-eksel-fayle.

А чуть позже в архиве найдена целая тема, в которой данный макрос был модифицирован автором по просьбам трудящихся:
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=24531&tags=&q=http%3A%2F%2Fwww.sql.ru%2Fforum%2F722758&FORUM_ID[0]=0&DATE_CHANGE=0&order=relevance&s=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8&PAGEN_1=2

Но к сожалению, даже это, как говорится, разжеванное для особо одаренных, мне не помогло.

Поэтому, буду благодарен тому, кто поможет мне разобраться с вопросом модернизации макроса под мою ситуацию. Кстати, для одного столбца он работает действительно буквально секунды. Более чем устраивает. Теперь дело за малым - упросить макрос не мочить строчки, в которых дата меньше даты урезания.

Прикладываю пример. В нем условно датой урезания принято 01.07.13
Для удобства, во всех строках, где я покопался, я поставил комментарий "!!!"
После запуска test_del_row должны удалиться все строки с красными ячейками.
Желтые удалятся, когда я запущу макрос для колонок D, и потом - F (я решил не делать это в одном вызове - меня устроит 3 вызова, т.к. макрос будет использоваться в разных частях и универсальность мне важнее).
Зеленые строки не будут удалены никогда, т.к. находятся до даты урезания. К сожалению, сейчас макрос этого не понимает и удаляет их.


Скрытый текст
Изменено: Alex-M - 09.09.2013 01:43:51
Страницы: 1 2 След.
Наверх