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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2012, 18:55   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Удаление строк по значению ячеек диапазона

Добрый день уважаемые форумчане!
Будьте добры, подскажите по этому коду:

Sub test()
Application.ScreenUpdating = False ' отключаем обновление экрана
Dim sh As Worksheet: Set sh = ActiveSheet
Dim FirstCell As Range: Set FirstCell = sh.Range("W2") ' первая ячейка
' берем диапазон до последней заполненной
Dim ra As Range: Set ra = sh.Range(FirstCell, FirstCell.End(xlDown))
ra.Value = ra.Value ' преобразуем формулы в значения
ra.Replace "0", vbNullString, xlWhole ' очищаем ячейки с нулями
On Error Resume Next
ra.SpecialCells(xlCellTypeBlanks).E ntireRow.Delete ' удаляем строки, которые были с нулями

sh.UsedRange.Value = sh.UsedRange.Value ' преобразуем формулы в значения на всем листе

End Sub

Мне необходимо сначала преобразовать все ячейки с формулами на листе в значения, а потом работать с диапазоном по удалению строк с нулевым значением. Куда мне переместить строчку?

sh.UsedRange.Value = sh.UsedRange.Value ' преобразуем формулы в значения на всем листе

И тогда, я так понимаю, строчка

ra.Value = ra.Value ' преобразуем формулы в значения

не нужна?
strannick вне форума Ответить с цитированием
Старый 26.01.2012, 19:25   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

А Вы попробовать боитесь?
Думаю, вместо
ra.Value = ra.Value
нужно поставить строку
sh.UsedRange.Value = sh.UsedRange.Value
а в конце её убрать - уже лишняя.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.01.2012, 19:30   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Большой привет профессионалам!
Вот, как раз вместо той строчечки и не пытался. Я думал, что ее в начало надо поставить, а потом уже определять диапазон. Понятное дело, что в конце она уже не нужна. Сейчас попробую.
strannick вне форума Ответить с цитированием
Старый 26.01.2012, 19:33   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub test()
    With ActiveSheet.Range([W2], [W2].End(xlDown))
        .Parent.UsedRange.Value = .Parent.UsedRange.Value
        .Replace "0", vbNullString, xlWhole    ' очищаем ячейки с нулями
        On Error Resume Next
        .SpecialCells(xlCellTypeBlanks).EntireRow.Delete    ' удаляем строки, которые были с нулями
    End With
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 26.01.2012, 19:35   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну можно и в начало, после
Set sh = ActiveSheet
Но строка ra.Value = ra.Value тогда тоже лишняя. Т.е. одну переносим выше, другую стираем - так проще одну другой заменяем и всё
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.01.2012, 19:38   #6
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Не сработало. Формулы преобразовались в значения, а всего остального, то есть удаления строк с нулевым значением в столбце W, не произошло.
strannick вне форума Ответить с цитированием
Старый 26.01.2012, 19:43   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Не сработало что?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 26.01.2012, 19:45   #8
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Код:
Sub test()
    With ActiveSheet.Range([W2], [W2].End(xlDown))
        .Parent.UsedRange.Value = .Parent.UsedRange.Value
        .Replace "0", vbNullString, xlWhole    ' очищаем ячейки с нулями
        On Error Resume Next
        .SpecialCells(xlCellTypeBlanks).EntireRow.Delete    ' удаляем строки, которые были с нулями
    End With
End Sub
Ситуация аналогичная, преобразование прошло, удаление - нет.
strannick вне форума Ответить с цитированием
Старый 26.01.2012, 19:49   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Давайте Ваш пример, где не сработало.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 26.01.2012, 20:07   #10
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Давайте Ваш пример, где не сработало.
Прикрепил. Мой код в 12 модуле, Ваш в 14. Тут вот еще какое дело. До этой операции работает макрос из 13 модуля (собирает данные с листов в папке). Может преобразование формул в значения туда поставить, в конце? И объединить в один с сохранением в отдельный файл с именем-текущей датой?
И еще заодно такой вопрос, раз уж файл приложил. В столбце T часы. Как сделать, чтобы удаление строк происходило не только при нулевом значении в столбце W, но и если часы попадают в диапазон от 0 часов до 9 часов (нерабочее время, простой все равно)?
Вложения
Тип файла: rar файл выборки координат.rar (319.0 Кб, 14 просмотров)
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление всех строк из БД по значению из колонки artemavd Общие вопросы Delphi 8 18.09.2011 12:24
Подсчет ячеек одновременно по цвету и значению bud-dy Microsoft Office Excel 7 17.03.2011 14:43
выделение ячеек, сходных по значению соседнего листа dedelev Microsoft Office Excel 2 02.03.2011 13:22
Удаление строк в массиве по значению в строке ZanderBlack1 Microsoft Office Excel 1 19.01.2011 16:11
Удаление “нулевых” ячеек из диапазона Kozlov_OV Microsoft Office Excel 2 07.07.2010 17:46