Excel макрос удаление значения ячейки

Метод Range.Clear для полной очистки диапазона ячеек из кода VBA Excel. Методы очистки отдельных свойств и их групп в ячейках. Примеры использования.

Методы очистки ячеек

Метод Очищаемые свойства Примечание
Range.Clear Почти все свойства Ширина и высота ячеек не изменяются
Range.ClearComments Комментарии Для Excel в составе Office 365
Range.ClearContents Формулы и значения Исходное форматирование сохраняется
Range.ClearFormats Свойства, задающие форматы В том числе отмена объединения ячеек
Range.ClearHyperlinks Гиперссылки Текст и форматирование сохраняются
Range.ClearNotes Примечания и заметки Примечания – для локальных программ Excel, заметки – для Excel в составе Office 365
Range.ClearOutline Структура данных Смотрите, что такое структурирование данных

Range – выражение, возвращающее диапазон ячеек.

Примеры использования

1. Удаление гиперссылки из ячейки A1
Cells(1, 1).ClearHyperlinks

2. Очистка диапазона A1:L50 от формул и значений
Range("A1:L50").ClearContents

3. Очистка всех свойств ячеек в столбцах A:K
Columns("A:K").Clear

4. Очистка форматирования ячеек в строках 1:20
Rows("1:20").ClearFormats

Методы очистки диапазонов ячеек в VBA Excel возвращают очищаемые свойства ячеек к значениям по умолчанию. К таким, как на вновь созданном стандартном рабочем листе. При любых методах очистки высота строк и ширина столбцов не изменяются.


Фразы для контекстного поиска: очистка ячеек, очистка ячейки, очистка формул, очистка от формул, удаление формул, очистка значений, удаление значений, очистка форматов, удаление форматирования, удаление форматов.


5 / 5 / 0

Регистрация: 02.01.2017

Сообщений: 164

1

Нужен макрос для удаления значений в ячейках по условию

02.03.2017, 22:57. Показов 26095. Ответов 9


Студворк — интернет-сервис помощи студентам

Ребята каким можно макросом удалять значения определённых ячеек .Задача макроса ,в ячейках в каждой из строк начиная с 28 строки столбца I ,промониторить выполняется ли условия чтобы если в ячейке значение меньше 2,00 то в этой строке будут стерты значения в ячейках C28 D28 E28 M28 N28 O28 P28 и так по всем ниже расположенным строкам без ограничения.Если условие в строке выполняется то значения в ячейках столбцов C,D,E,M,N,O,P это же строки будут удалены.Значения во всех этих ячейках введены используя выпадающий список.



0



smeckoi77

61 / 60 / 16

Регистрация: 13.02.2017

Сообщений: 172

03.03.2017, 00:47

2

Лучший ответ Сообщение было отмечено Aleks 1978 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub макрос()
 
For i = 28 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & i) < 2 Then
    Range("C" & i).ClearContents
    Range("D" & i).ClearContents
    Range("E" & i).ClearContents
    Range("M" & i).ClearContents
    Range("N" & i).ClearContents
    Range("O" & i).ClearContents
    Range("P" & i).ClearContents
    End If
Next i
 
End Sub



1



5 / 5 / 0

Регистрация: 02.01.2017

Сообщений: 164

03.03.2017, 03:03

 [ТС]

3

А можно пожалуйста ещё одно условие добавить в этот макрос ,к тому что в «A» ячейка < 2 .и ещё если в столбце «H» этой же строки ячейка имеет значение текст «ДА» то ‘макрос срабатывает на удаление значений в ячейках столбцов C,D,E,M,N,O,P.



0



k61

85 / 82 / 31

Регистрация: 13.10.2014

Сообщений: 167

03.03.2017, 05:46

4

Лучший ответ Сообщение было отмечено Aleks 1978 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub макрос_1()
For Each x In Range(Cells(28, 9), Cells(Cells(Rows.Count, 9).End(xlUp).Row, 9))
Set rrr = Union(Range(x.Offset(, -6), x.Offset(, -4)), Range(x.Offset(, 4), x.Offset(, 7)))
  If x < 2 Then
    If x.Offset(, -8) < 2 Then
      If x.Offset(, 11) = "ДА" Then rrr.ClearContents
    End If
  End If
Set rrr = Nothing
Next x
End Sub



1



Aleks 1978

5 / 5 / 0

Регистрация: 02.01.2017

Сообщений: 164

03.03.2017, 06:20

 [ТС]

5

А как можно вот этот вариант кода с одним условием,закрепив его выполнение за кнопкой на Листе 9 ,чтобы он смог сделать свои вычисления с данными находящимися на Листе3 ?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub макрос()
 
For i = 28 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & i) < 2 Then
    Range("C" & i).ClearContents
    Range("D" & i).ClearContents
    Range("E" & i).ClearContents
    Range("M" & i).ClearContents
    Range("N" & i).ClearContents
    Range("O" & i).ClearContents
    Range("P" & i).ClearContents
    End If
Next i
 
End Sub



0



smeckoi77

61 / 60 / 16

Регистрация: 13.02.2017

Сообщений: 172

03.03.2017, 08:22

6

Лучший ответ Сообщение было отмечено Aleks 1978 как решение

Решение

Перед словом Range везде дописать Sheets(«Лист3»).

Visual Basic
1
Sheets("Лист3").Range("A" & i)

Добавлено через 3 минуты
добавить условие в строку

Visual Basic
1
If Range("A" & i) < 2 And Range("H" & i) = "ДА" Then



1



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

03.03.2017, 09:35

7

Лучший ответ Сообщение было отмечено Aleks 1978 как решение

Решение

Visual Basic
1
2
3
4
5
Range("C" & i).ClearContents
Range("D" & i).ClearContents
Range("E" & i).ClearContents
вариант в одну строчку
Range("C" & i).Resize(1,3).ClearContents



1



Aleks 1978

5 / 5 / 0

Регистрация: 02.01.2017

Сообщений: 164

05.03.2017, 20:36

 [ТС]

8

Добавил в макрос второе условие,которые будут в столбце A отбирать на удаление только значения меньше 1,50 и больше 1,70.Вопрос в чём ошибка строки в коде? а то макрос не работает.

Visual Basic
1
  If Range("A" & i) <  1,50  And Range("A" & i)  >  1,70 Then
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Макрос ()
 
For i = 28 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & i) <  1,50  And Range("A" & i)  >  1,70 Then
    Range("C" & i).ClearContents
    Range("D" & i).ClearContents
    Range("E" & i).ClearContents
    Range("M" & i).ClearContents
    Range("N" & i).ClearContents
    Range("O" & i).ClearContents
    Range("P" & i).ClearContents
    End If
Next i
 End Sub



0



smeckoi77

61 / 60 / 16

Регистрация: 13.02.2017

Сообщений: 172

05.03.2017, 20:45

9

Число не может быть меньше 1,5 и больше 1,7 одновременно.

Добавлено через 4 минуты
значения меньше 1,50 ИЛИ больше 1,70

Добавлено через 40 секунд

Visual Basic
1
If Range("A" & i) <  1,50  Or Range("A" & i)  >  1,70 Then



1



5 / 5 / 0

Регистрация: 02.01.2017

Сообщений: 164

05.03.2017, 21:28

 [ТС]

10

Благодарю за помощь!Работает теперь



0



Неправильный синтаксис проверки. Правильно:

If Cells(i, 3).Value <> "Deal" Or Cells(i, 3).Value <> "Meal" Or Cells(i, 3).Value <> "Run" Then

Так правильно с точки зрения синтаксиса, но неправильно логически. Применяется оператор Or (ИЛИ). При такой записи не может быть результата False.

Примеры.

В ячейке слово «Deal«:

"Deal" <> "Deal" Or "Deal" <> "Meal" = False + True = True

В ячейке слво «Excel«:

"Excel" <> "Deal" Or "Excel" <> "Meal" = True + True = True

В этом случае нужно применять оператор And (И).

===========================

Просматриваем строки с 3 по 25. Если в ячейке столбца С значение не равно указанным, очищаем ячейку. Вместо And — каскад If, позволяющий отрезать лишние вычисления.

Sub DelVal1()
Dim i As Long
    For i = 3 To 25' цикл по строкам
        If Cells(i, 3).Value <> "Deal" Then
            If Cells(i, 3).Value <> "Meal" Then
                If Cells(i, 3).Value <> "Run" Then Cells(i, 3).ClearContents
            End If
        End If
    Next i
End Sub

Значение ячейки можно искать в тексте, составленном из искомых слов:

Sub DelVal2()
Dim i As Long
    For i = 3 To 25
        If Not ("DealMealRun" Like "*" & Cells(i, 3).Value & "*") Then _
                                            Cells(i, 3).ClearContents
    Next i
End Sub

Если слов много, имеет смысл занести их в массив:

Sub DelVal3()
Dim ArrVal()
Dim i As Long, j As Long
    ArrVal = Array("Deal", "Meal", "Run") ' значения в массив

    For i = 3 To 25 ' цикл по строкам
        For j = 0 To UBound(ArrVal) ' цикл по массиву
            If Cells(i, 3).Value = ArrVal(j) Then Exit For
        Next j

        ' ни одно не найдено - очищаем ячейку
        If j = UBound(ArrVal) + 1 Then Cells(i, 3).ClearContents
    Next i
End Sub

Многим пользователям, в том числе и мне, приходится ежедневно, еженедельно, ежемесячно либо ежегодно использовать одни и те же таблицы, сделанные в Excel. Для повторного и последующего использования этих таблиц, как правило приходится удалять значения некоторых ячеек для того, чтобы освободить место для внесения в них новых данных. Удалить устаревшие значения в таблице тем дольше и сложнее, чем старее версия Excel, чем больше таблица и чем больше промежуточных расчетов и результатов в этой таблице. Как сделать это быстро?

Чтобы было понятно о чем пойдет речь, вспомним, что ячейка — это часть табличного пространства, образованная пересечением строки и столбца. Ячейка может содержать какие-то значения, например числа, текст, формулы и так далее, а также может содержать информацию о шрифтах, их цветах и размерах, заливках, рамках, защите и так далее. Таким образом, удалять можно как сами ячейки со всем их содержимым (при этом место удаленной ячейки занимает новая, а всё табличное пространство смещается либо вверх, либо влево) так и часть информации, например только значения или только форматы. В этой публикации речь пойдет об удалении значений, когда сами ячейки остаются на своих местах и информация об их форматах остается неизменной.

Стандартные средства для удаления значений ячеек

Представим (либо посмотрим на видео ниже), что на рабочем листе Excel расположена таблица. В этой таблице шапка и некоторые столбцы, содержат различные текстовые значения, основное пространство таблицы содержит ячейки с числовыми значениями, которые в свою очередь участвуют в расчетах, определенных формулами. К примеру, необходимо удалить из этой таблицы только числа, не удаляя при этом формулы, или только текст, не удаляя при этом числа и всё остальное.

Для того чтобы очистить место в таблице для внесения новых значений можно выделять поочередно нужные диапазоны ячеек и нажимать кнопку «Delete» на клавиатуре, как говорится, медленно, но верно. Проделав такую операцию полтора десятка раз невольно появляется вопрос «а можно ли как-нибудь быстрее?». Конечно можно! Даже нужно. В Microsoft Excel 2007 и выше для этих целей подойдет такой инструмент как «Выделение группы ячеек». Для этого выбираем на ленте Excel вкладку «Главная», переходим в группу «Редактирование», нажимаем кнопку «Найти и выделить» и выбираем команду «Выделение группы ячеек». Появляется одноименное диалоговое окно, при помощи которого можно выделить определенные ячейки таблицы и после этого удалить их значения.

vyborochnoe-vydelenie-yacheek-excel

Выделение группы ячеек производится последовательно, нельзя например одновременно выделить и константы и формулы. Так уже гораздо быстрее, не правда ли? Но и это не предел. Все-таки удаление происходит в два этапа, сначала выделяем, затем удаляем. Если таблицы на разных листах и их много, то и с таким способом можно провозиться достаточно долго. В Excel 2003 выделение группы ячеек вообще не предусмотрено и в этой версии без дополнительных инструментов не обойтись.

Дополнительные инструменты для выборочного удаления значений

В некоторых случаях ускорить выборочное удаление значений ячеек поможет надстройка, которая легко устанавливается и запускается одним нажатием кнопки, выведенной прямо в главное меню. Надстройка позволяет удалять значения из ячеек с числами, с текстом, с формулами, с примечаниями, с заливкой, с рамками, как по раздельности, так и в любых сочетаниях. Кроме того предусмотрен выбор диапазона для удаления значений. Возможен используемый диапазон (с первой до последней заполненной ячейки), используемые диапазоны (используемый диапазон на каждом листе активной рабочей книги), выделенный пользователем диапазон, а также выделенный диапазон, но на каждом листе рабочей книги.

Использование надстройки позволяет:

1. выборочно удалять значения из ячеек с числами, с текстом, с формулами, с датами, ячеек содержащих примечания, цветную заливку, цветной шрифт, границы;

2. проводить выборочное удаление значений из ячеек используемых диапазонов, предварительно выделенных диапазонов, диапазонов, выбранных вручную, а также столбцов с заданными именами;

3. осуществлять очистку ячеек от значений на видимых, скрытых, непустых листах, листах с заданными именами, с заданными номерами, с заданным значением в определенном диапазоне, а также на всех листах рабочей книги Excel.

Видео по работе с надстройкойsmotret-video

kak udalit znacheniya yacheek v Excel

CompleteSolutionмакрос (надстройка) для выборочного удаления значений из ячеек

Видео по выборочному удалению значений ячеек

Другие материалы по теме:

Уважаемые пользователи! Помогите, пожалуйста, создать два макроса, один из которых удалял бы значение из последней заполненной ячейки столбца, другой — из диапазона ячеек, границы которого буду указывать я. Большое спасибо!


Пожалуйста, не игнорируйте мою просьбу!


Цитата: lovko от 28.03.2013, 15:20
Пожалуйста, не игнорируйте мою просьбу!

lovko, без паники! Еще никто не успел посмотреть Ваш файл, а Вы уже пожар устраиваете. Люди на работе, надо понимать.

Sub www(): [Ввод_инф!a65536].End(xlUp).ClearContents: End Sub
Sub www1(): Sheets("Лист3").Range([Старотовая!E14]).ClearContents: End Sub

Я, как всегда, чертовски адекватен… Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771


Большое спасибо! Макросы работают. Вы мне очень помогли!


Понравилась статья? Поделить с друзьями:
  • Excel макрос только для определенного листа
  • Excel макрос текущая ячейка
  • Excel макрос текущая строка
  • Excel макрос текущая дата в ячейку
  • Excel макрос текст по столбцам в excel