Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2018, 19:11   #21
СтаСС
Пользователь
 
Регистрация: 12.02.2017
Сообщений: 87
По умолчанию

Тема закрыта.. но понадобилось приоткрыть )
Снова тут возникла проблемка, в рабочих книгах все нормально.. в зависимости от количества данных на листе макрос от SAS888
Код:
Private Sub CommandButton1_Click()
    Dim x As Range, y As Range, i As Long, j As Long, q
    Application.ScreenUpdating = False
    i = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
    j = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
    Set x = Range([A3], Cells(i, j))
    For Each q In Array(0, 1): x.Replace q, "", xlWhole: Next
    On Error Resume Next: x.SpecialCells(4).Delete xlUp
    For Each y In x.Columns: y.Cut y.Offset(Application.CountIf(y, "")): Next
End Sub
работает отлично и по времени тоже.. от 3 до 15 мин., но наконец "собрал" книгу с полной базой данных (удалять нужно 4-е значения на 6-и листах имеющих около 100 строк, в каждой из которых по 12000-15000 ячеек) и оказалось что на это уходит + - три часа... может конечно еще и "железо" слабовато (два ядра по 3,8гг и 4гига оперативки) незнаю.. теперь база "чистая", но как быть дальше, база будет расти, а соответственно и время для макроса тоже.. менять начало диапазона не поможет т.к. новые ячейки вставляются в начале обрабатываемого диапазона и тогда происходит какбы "разрыв" в данных..
Единствееный вариант как избежать такого временного беспредала мне кажется это "прогонять" макрос ежедневно после ввода данных, но тогда нужно:
чтоб макрос работал только с последней заполненой строкой (ориентируясь по столбцу А) а при удалении ячейки пустая вместо нее вставлялась в строку №2 (на всех листах она свободна)

Как решить проблему знаю.. а как реализовать нет.. Помогите пожалуйста..
СтаСС вне форума Ответить с цитированием
Старый 30.03.2018, 05:24   #22
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Прикрепите пример исходных данных и пример того, что должно получиться с подробным объяснением, как должен формироваться этот результат.
2. Долгое время выполнения макроса - это результат того, что Вы требуете копировать ячейки вмести с их свойствами (в частности - заливка). Если возможно, то подумайте над тем, как сделать, чтобы макрос мог работать только со значениями ячеек. Быстрее будет в сотни раз.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 30.03.2018, 13:42   #23
СтаСС
Пользователь
 
Регистрация: 12.02.2017
Сообщений: 87
По умолчанию

1.Извините, что без примера и неочень понятно.
2.В том макросе ничего менять не надо, Вы сделали его именно так как мне и было нужно (в том числе и заливка), просто я непредвидел что с большим обьемом будет так "времязатратно", но раз в месяц или по мере необходимости его можно на ночь запускать да и всё..
Но получилось что тогда нужен более "легкий" (по времени выполнения) макрос на каждый день.. единственное что я придумал это "подсовывать" ему меньший обьем работы.. тоесть надо чтоб макрос только с последней строки удалял ячейки имеющие значения 0 и 1, а вместо удаляемых вставлять пустые ячейки, но именно в строку №2 так чтоб все остальные ячейки (с заливкой тоже) опускались чтоб небыло пустых ячеек между заполненых (в примере есть страница с нужным результатом).
Вложения
Тип файла: rar PRJMER_7.rar (16.1 Кб, 10 просмотров)
СтаСС вне форума Ответить с цитированием
Старый 02.04.2018, 05:17   #24
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пример во вложении. Проверяйте.
Вложения
Тип файла: rar Пример_8.rar (26.0 Кб, 9 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.04.2018, 18:57   #25
СтаСС
Пользователь
 
Регистрация: 12.02.2017
Сообщений: 87
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Проверяйте
В рабочей книге смогу проверить только завтра вечером, но сейчас проверял на разных примерах то макрос не только отлично работает но и просто будет "летать" примерно прикинул что на всех страницах данные за один день он обработает минут за 5-10, вобщем супер!
Большое Вам спасибо, надеюсь что больше, по крайней мере по этому вопросу беспокоить не буду ))
СтаСС вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться - Нужен макрос который выделит и скопирует по 10 ячеек вверх и вниз от активной ячейки омарат Microsoft Office Excel 2 16.05.2017 11:33
вставка ячеек в Excell со сдвигом вниз иванлеон Общие вопросы Delphi 1 24.05.2015 14:04
Вставка строк (с сохранением формулы) со смещением общего итога вниз DIMONRUS Microsoft Office Excel 10 07.08.2013 16:06
При удаление строк, картинки съезжают на 1 строку вниз Maxim360 Microsoft Office Excel 0 17.07.2013 17:02
Перенос значений поля со смещением вниз kulon БД в Delphi 0 23.04.2011 16:41