Цитата |
---|
написал: начинает крутиться синий кружок и excel зависает |
Зависает excel при запуске макроса
vba Как обратится к листу, чье имя - это значение ячейки?
VBA Exel Комбинации, Перебор возможных уникальных комбинаций.
23.12.2024 11:48:33
Соответственно чтобы оценить выборку всех вариантов из N строк от 1 до N строк - надо просуммировать все S(k) для k=1...n При n = 50 - S(50) = 10^15 сочетаний S(100) ~ 10^30 сочетаний. При скорости расчёта ~10^8 сочетаний в секунду (допустим) - за сутки посчитаются ~10^13 комбинаций. Значит для расчёта потребуется 10^17 суток. Сколько это тысячелетий оцените сами. |
|||
|
Как ускорить миллионы вычислений, ~20млн. ячеек с переменными сильно тормозят
03.12.2024 00:02:59
Ну, смотрите: если вы один заполняете эту сотню исходных данных на одном листе, сохраняя предыдущее состояние в другом файле, сами перед собой отвечая за верность ввода и сами контролируете результат, без необходимости контроля на этапе ввода, то можно-таки использовать для ввода Excel, делать расчёт с помощью макроса на VBA, встроенном в Excel и желательно результат расчета сохранять в другом файле (но можно и в данном, главное не попортить исходный чистый шаблон). При работе с макросом гланое учитывать, что Excel написан для работы с массивами, так что даже чтение из одной ячейки - это чтение массива размером 1×1. Поэтому время, которое занимает чтение данных из одной ячейки или из миллиона одним махом - мало отличаются. А вот если начать перебирать ячейки и пересчитывать значение в каждой модно успеть пообедать, а иногда и поужинать, пока результат отобразится на экране. То же верно и для записи: запись в одну ячейку и в прямоуголник млн.×тыс. занимает доли секунды. А если перебирать и записывать каждую ячейку из набора - время такого цикла существенно увеличивается.
теперь: любые математические действия с массивами в памяти делаются очень быстро, в отличие от пересчета формул, введенных в каждую из миллиона ячеек. Так что рекомендовал бы: 1. Создать файл шаблон для заплонения исходных данных. Сохранить. 2. Заполнить начальным набором данных. 3. Начать писать макрос с чтения всего набора разом в массив. 4. В процессе обработки можно создавать другие массивы для последующего вывода на лист и заполнять их рассчитанными данными, не используя формулы из Application, а используя математику самого Visual Basic - это в разы быстрее. затем вывести полученные массивы на лист/листы результата. 5. Может быть сразу в макросе и сохранять полученный файл под другими именами, чтобы не портить шаблон. Но, если в заполнении исходных данных заняты несколько человек, то желательно в процессе ввода сохранять: кто какие данные в какой момент ввёл , чтобы в последующем можно было разгребать ответственность за ошибки. Если возможен одновременный ввод разными операционистами под разные модели - тут никуда не деться от ведения базы данных, с учетом и операциониста и модели и даты -времени ввода. Написать ещё подпрограммы контроля для каждого вида данных, чтоб уж явную ересь не вносили. И потом формировать отчеты хоть в тот же Excel-файл на основании введенных и проверенных данных. |
|
|
Как ускорить миллионы вычислений, ~20млн. ячеек с переменными сильно тормозят
02.12.2024 21:17:12
|
|||
|
Объяснить каждую строку кода макроса удаления пустых строк, Помогите разобраться в коде
20.11.2024 13:47:31
P.S. В коде используются сторонние функции: GetLastRow() - получение номера последней заполненной строки листа rgv() - получение значения ячейки на пересечении указанных строки и колонки листа rgvset() - присвоение значения ячейки на пересечении указанных строки и колонки листа Код реально бредовый и при большом объёме данных медленно работающий. Править его неохота: наверняка ваша задача слегка отличается от задачи под которую писался данный неоптимальный код, и проще написать новый, чем править этот.
Изменено: |
|||
|
Преобразовать некорректные даты с помощью макроса, Нужно преобразовать некорректные даты в виде 5-значных чисел в корректные даты
20.08.2024 14:05:40
Для понимания: дата в Excel хранится в ячейке в виде 5-значного числа, равного числу дней, прошедших с 31.12.1899 по нужную дату. Если поменять формат ячеек у дат на числовой - получим 5-значные числа. И наоборот: Если поменять формат ячейки, содержащей 5-значное число, получим дату. Так что у вас просто формат потерялся при передаче данных.
Изменено: |
|||
|
Замена в макросе обычной формулы на формулу массива
29.07.2024 20:39:11
Можно попробовать схитрить: записать формулу с русскими именами функций в ОДНУ ячейку в свойство FormulaLocal. А затем записать в Range(..).FormulaArray свойство Formula из данной ячейки, доверив преобразование из Local в английские функции самому Excel. Типа:
Изменено: |
|||||
|
При перемещении/копировании строк через VBA меняются правила условного форматирования
12.07.2024 09:30:18
|
|||
|
Защита файла от изменений и пересохранений, Защита файла от изменений и пересохранений
24.05.2024 15:47:14
Навскидку, самое простое - сохранить в виде шаблона .xltx.
После открытия и внесения изменений он предлагает сохранять его как новый файл Excel, а даже если посредством манипуляций попытаться поменять на сохранение в тот же файл шаблона в формате шаблона - Excel не даст этого сделать.
Изменено: |
|
|
Ломанная сортировка месяцев на графике, настройка Excel
14.12.2023 08:20:52
Иван, наиболее вероятная причина такого поведения - при открытии файла, названия месяцев не распознаются, как месяцы и значит Excel автоматически преобразует их в текст - что и отражается в такой сортировке по алфавиту, вместо сортировки по датам.
Он очень много чего делает автоматически. Возможные варианты - из-за чего это и где искать: 1. В настройке локали ОС по умолчанию. Если в параметрах винды стоит по умолчанию другая страна - понятно, что в этом случае название месяца по-русски = ПРОСТО СТРОКА. Наиболее вероятен именно этот пункт. Но, если не поможет - можно поискать различия и 2. В параметрах Excel. - Язык Редатирования и Язык Интерфейса - какие стоят приоритетными по умолчанию? Сравните с вашими настройками. 3. В параметрах Excel. - Правила поиска ошибок. И тут придётся пройтись по каждому пункту с проверкой - поскольку именно они и преобразуют неверные по формату данные (по мнению Excel) в якобы "верные". |
|
|