Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
Visi0
1

Очистить ячейку в столбце, если значение 0

24.07.2013, 22:43. Показов 7832. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите.
Есть столбец, протяженностью несколько тысяч строк. В нем попадается цифра 0.

Подскажите скрипт что бы во всем столбце при Нахождении цифры ноль, ячейка очищалась
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2013, 22:43
Ответы с готовыми решениями:

Очистить от данных каждую четную ячейку в столбце
Здравствуйте! Помогите решить задачу.В выделенном столбце Excel необходимо очистить от данных...

Выделить ячейку с числом во втором столбце, если данное число есть также в первом столбце
День добрый,подскажите пожалуйста... на листе экселя есть 2 столбца с числами,как сделать так...

Excel: Очистить ячейку если та что справа окрашена в зеленый цвет
Могут ли макросы очищать ячейку когда ту что справа от нее окрасят в зеленый цвет? Прилагаю файл...

Как найти в столбце А значение, если удовлетворяет критериям то в столбце Б пишем результат
Здравствуйте! Всем отличных выходных!!! Помогите, если не сложно. Большой Квадрат - ЕСЛИ...

14
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
25.07.2013, 09:47 2
Visual Basic
1
2
3
for i = 1 to 60000
  if cells(i,1) = 0 then cells(i,2).ClearContents
next
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
25.07.2013, 11:20 3
самый простой код без всяких там наворотов... и понять смысл будет легко
Visual Basic
1
2
3
4
5
6
7
8
sub ClearRange()
 t=2 ' первый ряд откуда надо начинать искать
 t1=5000 ' последний ряд куда надо  искать
 c=3' колонка в которой надо искать
for i=t to t1
 if  cells(i,c)=0 then cells(i,c)=""
next
end sub
Добавлено через 1 час 30 минут
sulfur, ну опять опередили....
0
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
25.07.2013, 11:22 4
IvanOK, зато у тебя все разжевано
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
25.07.2013, 12:37 5
Нет, ну все бы хорошо, но что вот это:
Есть столбец, протяженностью несколько тысяч строк.
Может, попробовать AutoFilter? Где-то так, без страховки:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub aF()
Dim mCOLUMN&
   mCOLUMN = 2
      With ActiveSheet
         .UsedRange.AutoFilter Field:=mCOLUMN, Criteria1:=0
         .UsedRange.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).ClearContents
         .AutoFilterMode = False
      End With
End Sub
1
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
25.07.2013, 12:45 6
Igor_Tr,
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
25.07.2013, 12:51 7
Не понял удивления. У ТС есть конкретный столбец. На листе несколько тыс. строк. Перебором можно? Можно. А выспаться при этом можно? Тоже можно. А что? Что-то не работает? Я проверил.
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
25.07.2013, 12:57 8
Igor_Tr, с вами я вполне согласен но сомневаюсь что ТС понял решение.....по своему опыту знаю что долго.... начинает надоедать...потом ищешь а нельзя ли быстрее...
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
25.07.2013, 13:19 9
Жизнь заставит - разберется

Добавлено через 16 минут
To Visi0. Уточню для Вас. mCOLUMN = 2. Двойка - это номер столбца, где Ваши нули (поставьте реальную цифру). Код очистит все данные по ряду, где в столбце mCOLUMN будет 0. Если нужно только ячейку, тогда выражение:
.UsedRange.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).ClearContents
чуть измените. Вот так:
.UsedRange.Columns(mCOLUMN).Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).ClearContents
Веселой работы.
1
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.07.2013, 13:44 10
Лучший ответ Сообщение было отмечено как решение

Решение

Ещё вариант, быстрый:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub Main()
    Dim x As Range: Application.ScreenUpdating = False
    Set x = [A:A].Find(0, , , xlWhole)
    If Not x Is Nothing Then
        [A:A].ColumnDifferences(x).EntireRow.Hidden = True
       ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeVisible).Clear
        Rows.Hidden = False
    End If
End Sub
3
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
25.07.2013, 13:52 11
А если еще учесть, что я лично немного разочарован в последнее время AutoFilter, тогда только вариант от Hugo121.
To Hugo121. Здравствуйте. На некоторых англоязычных форумах я встречаю Hugo. Если не секрет - это Вы?
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.07.2013, 13:56 12
Нет, мне русскоязычных хватает
1
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
25.07.2013, 14:03 13
Hugo121, снимаю шляпу...

Добавлено через 3 минуты
Цитата Сообщение от Hugo121 Посмотреть сообщение
ColumnDifferences
можно подробнее о методе....
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.07.2013, 14:24 14
Ничего другого, что не написано в хелпе - не знаю
Кстати, в хелпе есть ссылка и на RowDifferences
1
Visi0
26.07.2013, 00:37 15
Все понятно и доходчиво разжевано. Огромное всем спасибо. Завтра на работе проверю
26.07.2013, 00:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2013, 00:37
Помогаю со студенческими работами здесь

Если в ячейке присутствует ":", то ячейку нужно очистить и присвоить 1
У меня такая проблема. В 1 столбце в каждой ячейке у меня куча данных если в ячейке присутствует...

Если в ячейке присутствует "-", то ячейку нужно очистить по всему листку
По всему листку лежит куча информации во всех ячейках в некоторых ячейка где нету информации стоит...

В ячейке Е1 часть слова которую нужно найти и если есть то выделить эту ячейку со строкой в столбце С
Sub Поиск() ' Dim МестоПоиска As String Dim ЧтоИщем As String For i = 1 To 3 МестоПоиска =...

По нажатию кнопки, сравнить значение в TextBox со значенями в столбце A, активировать найденную ячейку
Здравствуйте, так как не владею VBA, но надо решить, то прошу помощи со скриптом: есть textbox и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru