осваиваю прирост памяти. из видимого на глаз: прирост скорости выполнения макросов прирост скорости применения фильтров в таблицах с формулами прирост скорости обновления кубов.
С кубами остались вопросы, которые видимо не решить приростом ресурсов, видимо задачку надо по другому решать, есть кубы которые даже с нарощенной памятью обновляются 20-30 минут, видимо для быстрой выгрузки из БД отчетов в Эксель в определенном виде с фильтрацией надо пользоваться не кубами, а напрямую как то это делать, буду смотреть варианты.
Greendumb написал: форму документа переделать не получится,
форму переделывать не нужно - просто справа пристыкуйте столбцы с ВПР. Для сводной таблицы роли не играет в каком порядке идут столбцы на листе данных, итоговая форма будет та же.
SAS888 написал: Можно обойтись без явного перебора "кучи" ячеек в циклах
Ваш макрос не учитывает место расположения ~ в тексте, а в условиях четко сказано что нужно ловить только когда символ первый, а не в середине или в конце.
For y = 2 To 53 For x = 4 To 5000 If IsEmpty(Cells(x, y)) Then GoTo 10 If Asc(Left(Cells(x, y), 1)) = 126 Then Cells(x, y).Interior.ColorIndex = 24 Cells(x, y) = Right(Cells(x, y), Len(Cells(x, y)) - 1) End If
For y=2 to 53 For x=4 to 5000 if chr(left(cells(x,y),1))=126 then cells(x,y).interior.colorindex=24 cells(x,y)=right(cells(x,y),len(cells(x,y))-1) end if
next x next y
end sub
Изменено: Сергей201707 - 10.08.2017 10:13:02(забыл вторую задачу)
Андрей VG написал: ТС ждёт, видимо, "волшебного" пенделя
не ждет
ОЗУ уже заказана техотделу, жду когда купят и поставят, отпишу по результату. Excel с 32битного переставлен на 64х, с кубами стало заметно легче работать, перестал вылетать там где раньше ругался на нехватку ресурсов.
имхо ценность АВС анализа, сделанного по всей сразу номенклатуре по количественному показателю невелика - будут по ликвидности сравниваться товары разной ценности и разных товарных направлений. Победят самые дешевые и массовые. Обычно такой анализ делают хотя бы в разрезе товарных категорий и не по количеству а по реализации в рублях.
Учитывая разносторонность и разнонаправленность задач, которые делаю в Экселе пытаюсь понять насколько будет оправдано для этого поставить 16гб ОЗУ и переустановить Эксель на 64 битную версию.
Андрей VG написал: с переходом на 64бит версию отвалится весь код, использующий 32бит компоненты, например, все VB6 библиотеки, как пример, MSCOMCTL.ocx.
не страшно, особо насколько понимаю это не используем. В первую очередь интересует прирост скорости и размера файлов после перехода на 64 Эксель и 16гб ОЗУ.
Sanja написал: Попробуйте объяснить на конкретных данных из Вашего файла.
так в примере же все предельно просто: три цветных группы куда в цветном поле заносится поисковые слова или части слов, выше написано по какой логике они объединены, в правом столбце фильтр 0 или 1 в зависимости от срабатывания всей логической цепочки ключей/слов.
Vetermsk написал: Если у вас миллиарды значений в массивах - точно нужно уходить из Excel'я. Либо опять же оптимизировать алгоритмы, чтобы такие массивы создавались и хранились в памяти только в момент появления потребности в них.
Часть работы в Excel идет в кубах. Там вообще формул нет, но памяти перестает хватать не на миллиардах значений, а тысяч сто строк (уточню когда опять ругнется) на 5-8 столбцов.
ключ это слово или часть слова которое ищется в ячейке первого столбца. Таких слов может быть несколько и они могут быть объединены по условиям И, ИЛИ, НЕ. Т.е. фильтр должен сработать например если текст в первой ячейке содержит слово1 и слово2, оба сразу, или содержит слово 3 и слово4, тоже оба сразу, при этом не содержит слово5 или слово6. Количество слов в этих группах может быть от 0 до 3х.
Логика: Слева направо - первый блок если в текстовой ячейке слева содержится три ключа указанные в верхней строке или во втором блоке аналогично 3 ключа, а в третьем блоке ни одного ключа то в правой колонке срабатывает метка.
Сейчас это все работает но форма неудобная - очень много столбцов израсходовано и ввод ключей хотелось бы не в таблице, а в открывающемся окошке или что то подобное. В идеале чтобы был только столбец с текстом и столбец с меткой, причем чтобы столбцы можно было менять по положению в большой таблице. В выпадающей форме чтобы все ключи одновременно а не по очереди вводились в соответствующие ячейки.
p.s. и чтобы можно было задавать менее трех ключей. Сколько задано столько и срабатывает. Незаполненный ключ чтоб из логики выключался.
очень давно сталкивался с работой в файле с большим количеством листов, для удобства программисты сделали реестр листов на отдельном листе и в нужный можно было попасть два раза щелкнув мышкой при установленном курсоре на названии требуемого листа в реестре. Обратно на реестр можно было попасть кажется сочетанием кнопок.
twwi написал: Если план перевыполнен я буду видеть план ниже чем первоначальный
если план выполнен 25 числа вместо 31 на 100% что вы хотите видеть 26, 27, 28, 29, 30 и 31 в качестве ежедневного? Ниже чем первоначальный это как? Вы с алгоритмом определитесь. Как будете считать при перевыполнении? Ежедневный план = номинальному ежедневному из расчета 31 дней? Или реальной скорости выполнения за 25 дней? ....
Vetermsk написал: А если задача разовая, так может, протянув формулы, заменить их потом на значения?
не всегда получается сразу написать без ошибок сложную формулу, протянул - посмотрел - исправил формулу - протянул... А если на значения менять то придется ее по новой писать. Можно конечно в 1 строке не копировать на значение но часто бывает нужно разные формулы копировать в отфильтрованные куски таблицы в одном и том же столбце....
Vetermsk написал: По п.а может формулы загнать в макросы?
Для типовых операций возможно, а часто бывает необходимо разово обрабатывать таблицы 200-800 тыс строк по нетиповым/разовым задачам, написание каждый раз макроса займет существенно больше времени чем использование набора формул, имхо.