Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Удаление отрицательных значений в Excel  (Прочитано 13300 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Olegspb
Гость
« : 28-12-2005 06:55 » 

Есть у меня таблица данных в екселе, один столбец содержит цифровые значения (положительные и отрицательные). Мне нужно удалить строки с отрицательныеми значениями. Пишу такой макрос:   

 ActiveCell.CurrentRegion.Select 'выбираю таблицу
    numRows = selection.Rows.Count 'считаю кол-во строк
    For Each c In Range("c4:c" & numRows) 'определяю нужный диапазон
       If c.Value <= 0 Then c.Select
       selection.EntireRow.Delete 'задаю критерий отбора и что делать
  Next

Дело в том, что удалятеся все. Я думаю, что  c.Select выделяет все ячейки, а не ячейки со значением <0. Подскажите, пожалуйста, как выделить именно нужные мне ячейки.
« Последнее редактирование: 16-12-2007 14:30 от Алексей1153++ » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 28-12-2005 07:22 » 

по идее надо тип данный как-то проверить, не знаю как, я не под VB пишу

а в твоём случае имхо достаточно в строке
If c.Value <= 0 Then c.Select
убрать "="
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 28-12-2005 07:24 » 

кстати, зря темы удаляешь - тебе может кто-нибудь более умное чего посоветовал, чем я тогда Улыбаюсь
Записан

Olegspb
Гость
« Ответ #3 : 28-12-2005 07:43 » 

С той темой я разобрался:
c.Value = -c.Value
Все было просто как молоток Отлично

А по этому посту я не точно написал, необходимо удалить отрицательные и нулевые значения. Отсюда и =. Но проблема в том, удаляется вся таблица. Думаю из-за того, что 'c.Select' - это неверно, но как правильно написать ссылку на ячейки отвечающие условию <=0 не знаю Жаль Вот где собака закопана...
« Последнее редактирование: 16-12-2007 14:31 от Алексей1153++ » Записан
gveret_nasty
Гость
« Ответ #4 : 16-01-2006 16:18 » 

Не надо писать select, лучше удалять строки по номерам. Т.е. if cells(i,j)<=0 then rows(i).delete. Примерно так
Записан
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 17-01-2006 03:42 » 

 Внимание! Говорит и показывает...
Код:
Dim Sht As Worksheet
Dim i, RowEnd As Integer
 
Set Sht = Application.ActiveWorkbook.ActiveSheet
RowEnd = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeLastCell).Row
i = 4
While i <= RowEnd
  If Sht.Cells(i, 3) < 0 Then
   Sht.Rows(i ).Delete
  Else
   i = i + 1
  End If
Wend
И усё Улыбаюсь
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines