Очистить ячейки при условии excel

Иногда вам может потребоваться очистить содержимое ячейки на основе условий в Excel, например очистка содержимого ячейки, если ячейка содержит определенное значение, очистка содержимого ячейки, если в другом столбце есть пустые ячейки, или очистка содержимого ячейки с определенным цветом фона и т. д. , Эта статья познакомит вас с некоторыми приемами для быстрого и легкого решения этих задач.

Очистить содержимое ячейки на основе значения ячейки с кодом VBA

Очистить целые строки, если значение больше или меньше определенного значения с кодом VBA

Очистить содержимое ячейки или строки на основе значения ячейки с помощью удобной функции

Очистить целые строки, если другая ячейка пуста с кодом VBA

Очистить содержимое ячейки на основе цвета фона с помощью кода VBA


Очистить содержимое ячейки на основе значения ячейки с кодом VBA

Например, у вас есть следующий диапазон данных, теперь вы хотите очистить содержимое ячейки «Толстовка», приведенный ниже код VBA может оказать вам услугу.

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: очистить содержимое ячейки, если ячейка равна определенному значению

Sub ClearContents()
'Updateby ExtendOffice
 Dim xRng As Range
 Dim xCell As Range
 Dim xText As String
 Set xRng = Application.Range("A2:A12")
 xText = "Hoodie" 'Change this text to your own
 For Each xCell In xRng
 If xCell.Value = xText Then
 xCell.clearContents
 End If
 Next xCell
End Sub

Внимание: В приведенном выше коде A2: A12 это диапазон данных, из которого вы хотите очистить содержимое ячейки, текст «Толстовка с капюшоном” — это конкретное значение, которое вы хотите очистить. Пожалуйста, измените их на свои.

3, Затем нажмите F5 key для запуска этого кода, и все ячейки с текстом «Толстовка» сразу очищаются, см. скриншот:


Очистить целые строки, если значение больше или меньше определенного значения с кодом VBA

Предположим, у вас есть приведенный ниже диапазон данных, чтобы очистить все содержимое строки, если значение в столбце D больше или меньше 300. Здесь я создам код VBA для его завершения.

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: очистить целые строки, если значение ячейки больше или меньше определенного значения

Sub ClearRowInValue()
'Updateby ExtendOffice
Dim xRg As Range
Dim xStrAddress As String
Dim xStrValue As Integer
Dim xCell As Range
Dim xRowRg As Range
Dim xF As Integer
Dim xBol As Boolean
xStrAddress = "D2:D12" 'Change cell range
xStrValue = 300 'change the value
Set xRg = Range(xStrAddress)
For xF = xRg.Rows.Count To 1 Step -1
    Set xRowRg = xRg.Rows.Item(xF)
    xBol = False
    For Each xCell In xRowRg.Cells
        If Application.IsNumber(xCell.Value) Then
        If xCell.Value > xStrValue Then
        xBol = True
        Exit For
        End If
        End If
    Next
    If xBol Then
        xRowRg.EntireRow.clearContents
    End If
Next
End Sub

Внимание: В приведенном выше коде D2: D12 содержит ли диапазон данных конкретное значение, на основе которого вы хотите очистить строки; 300 конкретное значение; в > персонаж в сценарии Если xCell.Value > xStrValue Тогда означает больше чем, используйте меньше чем, измените его на < характер, как вам нужно.

3, Затем нажмите F5 ключ для запуска этого кода, и все содержимое строки очищается, если значение в столбце D больше 300, см. снимок экрана:


Очистить содержимое ячейки или строки на основе значения ячейки с помощью удобной функции

Если у вас есть Kutools for Excel, С его Выбрать определенные ячейки функцию, вы можете выбрать ячейки или строки на основе определенного значения, а затем сразу удалить содержимое ячейки.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Выберите диапазон данных со значениями, на основе которых вы хотите очистить содержимое ячейки или строки, а затем щелкните Кутулс > Выберите > Выбрать определенные ячейки, см. снимок экрана:

2. В открытом Выбрать определенные ячейки диалоговом окне выполните следующие операции:

  • Нажмите Ячейка or Весь ряд что вы хотите выбрать;
  • Укажите критерии под Конкретный тип раздел, как вам нужно. Здесь я хочу выбрать строки, значение которых в столбце D больше 300.

3. Затем нажмите Ok кнопка, и будут выбраны все строки со значением больше 300. Теперь вам просто нужно нажать клавишу Delete на клавиатуре, чтобы удалить содержимое ячейки, см. снимок экрана:

Tips: Есть много других критериев, которые вы можете использовать, пожалуйста, укажите свое собственное условие в диалоговом окне, как показано ниже:


Очистить данные строк в диапазоне, если он содержит пустую ячейку с кодом VBA

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

Чтобы завершить эту задачу, примените следующий код VBA:

1. Удерживая нажатой ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, а затем вставьте следующий код в Модули Окно.

Код VBA: очистить данные строк, если они содержат пустую ячейку

Sub ClearContents()
'Updateby ExtendOffice
Dim xcell As Range
Set xrng = Application.Range("A2:D12")
For Each xcell In xrng
If xcell.Value = "" Then
Intersect(xcell.EntireRow, xrng).ClearContents
End If
Next
End Sub

Внимание: В приведенном выше коде A2: D12 диапазон данных содержит пустые ячейки, из которых вы хотите очистить содержимое ячеек.

3, Затем нажмите F5 ключ для запуска этого кода, и данные строк с пустыми ячейками очищаются сразу в определенном диапазоне, как вам нужно.


Очистить содержимое ячейки на основе цвета фона с помощью кода VBA

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

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, а затем вставьте следующий код в Модули Окно.

Код VBA: очистить содержимое ячейки на основе цвета фона

Sub Clearcontents()
'Updateby ExtendOffice
Dim xcell As Range
Dim xrng As Range
Set xrng = Application.Range("A2:D12")
    For Each xcell In xrng
        If xcell.Interior.Color = RGB(252, 228, 214) Then
            xcell.Clearcontents
        End If
    Next
End Sub

Внимание: В приведенном выше коде A2: D12 диапазон данных, который вы хотите использовать, RGB (252, 228, 214) — это конкретный цвет, на основе которого вы хотите очистить ячейки, вы можете извлечь режим RGB цвета фона, используя Рисовать программа на вашем компьютере.

3. А затем нажмите F5 для запуска этого кода, и содержимое ячейки с указанным цветом фона немедленно очищается. Смотрите скриншот:


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы и хранение данных; Разделить содержимое ячеек; Объедините повторяющиеся строки и сумму / среднее значение… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Избранные и быстро вставляйте формулы, Диапазоны, диаграммы и изображения; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Группировка сводной таблицы по номер недели, день недели и другое … Показать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки, у которых есть формула / имя

вкладка kte 201905


Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Содержание

  1. Как очистить ячейки стандартными средствами Excel?
  2. Как очистить все в выделенном диапазоне ячеек?
  3. Как очистить только форматы в выбранном диапазоне ячеек?
  4. Как очистить ячейки от содержимого?
  5. Как очистить ячейки от примечаний?
  6. Как очистить ячейки средствами VBA?
  7. Excel works!
  8. Как правильно и быстро очистить ячейки в Excel?
  9. Как быстро очистить ячейки в Excel от форматов?
  10. Как очистить данные в ячейках Excel? Очистка данных по условиям
  11. Удаление объектов, очистка листов от диаграмм или прочих добавленных объектов
  12. Методы очистки ячеек
  13. Примеры использования

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

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

Как очистить ячейки стандартными средствами Excel?

Для очистки ячеек от информации в Excel предусмотрено несколько режимов. Для того, чтобы их увидеть, выделяем диапазон, который будет подвергнут очистке и на вкладке «Главная» в группе кнопок «Редактирование» заходим в меню кнопки «Очистить».

Рассмотрим пункты меню кнопки «Очистить» более детально.

Как очистить все в выделенном диапазоне ячеек?

При выборе первого пункта «Очистить все», из ячеек выделенного диапазона будет удалена абсолютно вся информация.

Как очистить только форматы в выбранном диапазоне ячеек?

При выборе второго пункта «Очистить форматы» из выделенного даипазона будет удалена информация, связанная с форматом, то есть информация о шрифтах, их размерах, цветах, способах начертания и так далее, а точнее говоря, все эти параметры будут приведены к параметрам, используемым по умолчанию.

Как очистить ячейки от содержимого?

При выборе третьего пункта «Очистить содержимое» из выделенного диапазона будет удалена только та часть информации, которую вы можете видеть в строке формул, то есть удалены будут только значения ячеек.

Как очистить ячейки от примечаний?

Выбрав пункт четвертый «Очистить примечания», из выделенного диапазона будут удалены только примечания, вся остальная информация сохранится.

Как очистить ячейки средствами VBA?

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

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

1. Одним кликом мыши вызывать диалоговое окно макроса прямо из панели инструментов Excel;

2. на выбор пользователя удалять значения ячеек, примечания, гиперссылки, форматы, шрифты, заливки, рамки и объединения ячеек;

3. выбирать по своему усмотрению один из четырех режимов обработки данных (смотри скриншот).

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

Надстройка легко устанавливается и запускается одним нажатием кнопки, выведенной прямо в главное меню Excel.

Excel работает за вас

Excel works!

Thanks for Visiting

Как правильно и быстро очистить ячейки в Excel?

Столкнувшись снова, с тем что люди тратят много времени на очистку ячеек, поймал себя на мысли, что действий по очистке данных, ячеек, таблиц довольно много. Как очистить все данные на листе? Как удалить только форматы? Как убрать формулы? Или может быть вам нужно очистить данные по условию? Действительно, действий много. Наверное стоит подробно описать большинство способов. Как правильно и быстро очистить ячейки в Excel?

На самом деле, я бы разделил вопрос статьи на 3 части

  1. Как очистить форматы ячеек?
  2. Как очистить данные в ячейках Excel?
  3. Очистка/удаление прочих объектов, таких как диаграммы, автофигуры или сводные таблицы

Как быстро очистить ячейки в Excel от форматов?

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

Теперь ищите на ленте задач на вкладке Главная раздел Редактирование — в нем жмите кнопку Очистить

На выбор у вас будет несколько пунктов. Вы сможете

  1. Очистить все — т.е. удалить все данные на листе и форматы в том числе
  2. Очистить форматы — это как раз, то что нужно для примера
  3. Очистить содержимое — очищаем данные в ячейках, не трогая форматы
  4. Очистить примечания — удобная функция, если кто-то сильно зарецензировал ваш лист и оставил много примечаний. Появилась относительно недавно.
  5. Очистить гиперссылки — совсем новая возможность, появившаяся в 2016 версии. Позволяет очистить все ссылки на листе. Очень удобно если вы скопировали данные из интернета, например с Википедии, почти всегда копируется множество гиперссылок.

Если вы уже нажали пункт 2, то все ваши форматы очистились.

Но часто к форматам причисляют и условное форматирование . Мы знаем, что такое форматирование очень сильно грузит действия на листе, поэтому я не советую делать слишком много условий при помощи этой функции. Но если вы получили переформатированную книгу (как правило за счет копирования данных с условным форматированием много раз), то нужно знать как его удалить.

Опять выделяете нужную область или лист. Идете Главная — раздел Стили — Условное форматирование — Удалить правила и например Удалить правила со всего листа.

Все, условные форматирования тоже удалились!

Как очистить данные в ячейках Excel? Очистка данных по условиям

Как вы знаете удалить данные/информацию в ячейках Excel можно:

  • нажатием кнопки Delete на клавиатуре, после выделения нужной области
  • нажатием кнопки Удалить содержимое Главная — раздел Редактирование — в нем жмите кнопку Очистить содержимое (см. описание выше)
  • можно удалить не только данные, но и сами ячейки. Выделив к примеру строку, кликнуть правой кнопкой мыши и нажав кнопку Удалить (она же Ctrl + кнопка минус )

Помимо этого можно удалить данные и по нужным условиям.

Самое простое решение — сперва отобрать данные для удаления автофильтром . После чего вы можете удалить в выбранных ячейках все что вам нужно — формат, данные или даже сами ячейки ( Ctrl + кнопка минус )

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

Удаление объектов, очистка листов от диаграмм или прочих добавленных объектов

Чтобы удалить диаграмму, или автофигуры, нужно сперва ее выбрать, а затем удалить кнопкой Delete или через правую кнопку мыши — Удалить (см. выше). Но как быть, если вам необходимо удалить сразу несколько объектов — зажмите Ctrl и выберите нужные объекты. Если объектов очень много, то придется воспользоваться макросом, например, предложенном в пункте 4, этой статьи .

Так же объекты можно удалить если вы перейдете в меню Главная — раздел Редактирование — Найти и выделить — пункт Выделение группы ячеек — Объекты. Так можно очистить ячейки в 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 возвращают очищаемые свойства ячеек к значениям по умолчанию. К таким, как на вновь созданном стандартном рабочем листе. При любых методах очистки высота строк и ширина столбцов не изменяются.

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

Меню “Удалить ячейки” в группе УДАЛИТЬ на панели !SEMTools

Рекомендуется не рубить с плеча и не удалять ячейки сразу же, а сначала воспользоваться аналогичными макросами “Обнаружить ячейки” и “Извлечь ячейки”, чтобы, соответственно, найти и посмотреть на те данные, которые предстоит удалить.

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

  • По условию вхождения в ячейки определенных слов:

    Удалить – Ячейки – Содержащие слово
    Удалить – Ячейки – Содержащие слова – любое из списка

  • По условию простого вхождения паттернов:

    Содержащие …
    Начинающиеся с …
    Заканчивающиеся на …

  • Иногда простых паттернов может не быть достаточно, тогда пригодится удаление ячеек по соответствию регулярному выражению.
  • Не менее популярно удаление различных вариантов дубликатов ячеек. !SEMTools позволяет:

    Удалить дубли без смещения строк в Excel;
    Удалить неявные дубли;
    Удалить один список из другого: когда ячейки одного столбца нужно сравнить с ячейками другого и удалить найденные.

  • Довольно редкая задача — удалить ячейки в зависимости от их встречаемости в столбце —повторяющиеся, включая первый повтор, либо, наоборот, не повторяющиеся.

Также в меню Удалить слова находится процедура, которая позволяет удалить повторяющиеся значения в одной ячейке. А меню “Удалить строки” позволяет удалять целые строки на основе значений ячеек выделенного столбца.

Смотрите также:

  • Как удалить лишние символы в Excel;
  • Как удалять определенные слова в Excel;
  • Как удалять ненужные столбцы и строки по множеству условий;
  • Как убрать формулы из ячеек и оставить только значения.

Быстро и легко удалить ячейки по условию в Excel поможет !SEMTools.
Экономьте рабочее время для решения более важных задач!

Содержание

  1. Excel works!
  2. Excel works!
  3. Как правильно и быстро очистить ячейки в Excel?
  4. Как быстро очистить ячейки в Excel от форматов?
  5. Как очистить данные в ячейках Excel? Очистка данных по условиям
  6. Удаление объектов, очистка листов от диаграмм или прочих добавленных объектов
  7. Как удалить строки по условию?

Excel works!

Excel работает за вас

Excel works!

Thanks for Visiting

Как правильно и быстро очистить ячейки в Excel?

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

На самом деле, я бы разделил вопрос статьи на 3 части

  1. Как очистить форматы ячеек?
  2. Как очистить данные в ячейках Excel?
  3. Очистка/удаление прочих объектов, таких как диаграммы, автофигуры или сводные таблицы

Как быстро очистить ячейки в Excel от форматов?

Вам прислали файл сильно разукрашенный по цветам и его нужно очистить от форматов? Сделать это очень просто: выделяете нужный вам диапазон данных или весь лист сразу (нажав на уголок в левом верхнем углу таблиц).

Теперь ищите на ленте задач на вкладке Главная раздел Редактирование — в нем жмите кнопку Очистить

На выбор у вас будет несколько пунктов. Вы сможете

  1. Очистить все — т.е. удалить все данные на листе и форматы в том числе
  2. Очистить форматы — это как раз то, что нужно для примера
  3. Очистить содержимое — очищаем данные в ячейках, не трогая форматы
  4. Очистить примечания — удобная функция, если кто-то сильно зарецензировал ваш лист и оставил много примечаний. Появилась относительно недавно.
  5. Очистить гиперссылки — совсем новая возможность, появившаяся в 2016 версии. Позволяет очистить все ссылки на листе. Очень удобно, если вы скопировали данные из интернета, например, из Википедии, почти всегда копируется множество гиперссылок.

Если вы уже нажали пункт 2, то все ваши форматы очистились.

Но часто к форматам причисляют и условное форматирование . Мы знаем, что такое форматирование очень сильно грузит действия на листе, поэтому я не советую делать слишком много условий при помощи этой функции. Но если вы получили переформатированную книгу (как правило за счет копирования данных с условным форматированием много раз), то нужно знать, как его удалить.

Опять выделяете нужную область или лист. Идете Главная — раздел Стили — Условное форматирование — Удалить правила и например Удалить правила со всего листа.

Все, условные форматирования тоже удалились!

Как очистить данные в ячейках Excel? Очистка данных по условиям

Как вы знаете, удалить данные/информацию в ячейках Excel можно:

  • нажатием кнопки Delete на клавиатуре, после выделения нужной области
  • нажатием кнопки Удалить содержимое Главная — раздел Редактирование — в нем жмите кнопку Очистить содержимое (см. описание выше)
  • можно удалить не только данные, но и сами ячейки. Выделив, к примеру, строку, кликнуть правой кнопкой мыши и нажав кнопку Удалить (она же Ctrl + кнопка минус )

Помимо этого можно удалить данные и по нужным условиям.

Самое простое решение — сперва отобрать данные для удаления автофильтром . После чего вы можете удалить в выбранных ячейках все, что вам нужно — формат, данные или даже сами ячейки ( Ctrl + кнопка минус )

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

Удаление объектов, очистка листов от диаграмм или прочих добавленных объектов

Чтобы удалить диаграмму, или автофигуры, нужно сперва ее выбрать, а затем удалить кнопкой Delete или через правую кнопку мыши — Удалить (см. выше). Но как быть, если вам необходимо удалить сразу несколько объектов — зажмите Ctrl и выберите нужные объекты. Если объектов очень много, то придется воспользоваться макросом, например, предложенном в пункте 4, этой статьи .

Так же объекты можно удалить, если вы перейдете в меню Главная — раздел Редактирование — Найти и выделить — пункт Выделение группы ячеек — Объекты. Так можно очистить ячейки в Excel от объектов.

Напомню, что объекты могут значительно замедлять работу файла. Особенно, если данные копировались из внешнего источника.

Если же вам необходим специальный макрос для удаления специфических объектов, то пишите в комментариях или мне на почту!

Источник

Как удалить строки по условию?

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

Способ первый:
Использовать встроенное средство Excel — фильтр. Сначала его необходимо «установить» на листе:

  • Выделяем таблицу с данными, включая заголовки. Если их нет — то выделяем с самой первой строки таблицы, в которой необходимо удалить данные
  • устанавливаем фильтр:
    • для Excel 2003 : ДанныеФильтрАвтофильтр
    • для Excel 2007-2010 : вкладка Данные (Data)Фильтр (Filter)(или вкладка Главная (Home)Сортировка и фильтр (Sort&Filter)Фильтр (Filter) )

Теперь выбираем условие для фильтра:

  • в Excel 2003 надо выбрать Условие и в появившейся форме выбрать непосредственно условие(«равно», «содержит», «начинается с» и т.д.), а напротив значение в соответствии с условием.
  • Для 2007-2010 Excel нужно выбрать Текстовые фильтры (Text Filters) и либо сразу выбрать одно из предлагаемых условий, либо нажать Настраиваемый фильтр (Custom Filter) и ввести значения для отбора в форме

После этого удалить отфильтрованные строки. В 2007 Excel могут возникнуть проблемы с удалением отфильтрованных строк, поэтому рекомендую сначала так же прочитать статью: Excel удаляет вместо отфильтрованных строк — все?! Как избежать.

Способ второй:
применить код VBA, который потребует только указания значения, которое необходимо найти в строке и номер столбца, в котором искать значение.

Sub Del_SubStr() Dim sSubStr As String ‘искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim lMet As Long Dim arr sSubStr = InputBox(«Укажите значение, которое необходимо найти в строке», «www.excel-vba.ru», «») If sSubStr = «» Then lMet = 0 Else lMet = 1 lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «www.excel-vba.ru», 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow ‘цикл с первой строки до конца If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Если значение sSubStr не будет указано, то будут удалены строки, ячейки указанного столбца которых, пустые.
Данный код необходимо поместить в стандартный модуль. Вызвать с листа его можно нажатием клавиш Alt + F8 , после чего выбрать Del_SubStr и нажать Выполнить. Если в данном коде в строке
If -(InStr(Cells(li, 1), sSubStr) > 0) = lMet Then
вместо = lMet указать <> lMet , то удаляться будут строки, не содержащие указанное для поиска значение. Иногда тоже удобно.
Но. Данный код просматривает строки на предмет частичного совпадения указанного значения. Например, если Вы укажете текст для поиска «отчет», то будут удалены все строки, в которых встречается это слово(«квартальный отчет», «отчет за месяц» и т.д.). Это не всегда нужно. Поэтому ниже приведен код, который будет удалять только строки, указанные ячейки которых равны конкретно указанному значению:

Sub Del_SubStr() Dim sSubStr As String ‘искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim arr sSubStr = InputBox(«Укажите значение, которое необходимо найти в строке», «www.excel-vba.ru», «») lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «www.excel-vba.ru», 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow ‘цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Здесь так же, как и в случае с предыдущим кодом можно заменить оператор сравнения( Cells(li, lCol) = sSubStr ) с равно на неравенство( Cells(li, lCol) <> sSubStr ) и тогда удаляться будут строки, значения ячеек которых не равно указанному.

УДАЛЕНИЕ СТРОК НА ОСНОВАНИИ СПИСКА ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Иногда бывают ситуации, когда необходимо удалить строки не по одному значению, а по нескольким. Например, если строка содержит или Итог или Отчет. Ниже приведен код, при помощи которого можно удалить строки, указав в качестве критерия диапазон значений.
Значения, которые необходимо найти и удалить перечисляются на листе с именем «Лист2». Т.е. указав на «Лист2» в столбце А(начиная с первой строки) несколько значений — они все будут удалены. Если лист называется иначе(скажем «Соответствия») в коде необходимо будет «Лист2» заменить на «Соответствия». Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.

Sub Del_Array_SubStr() Dim sSubStr As String ‘искомое слово или фраза Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long Dim arr lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «www.excel-vba.ru», 1)) If lCol = 0 Then Exit Sub Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count ‘заносим в массив значения листа, в котором необходимо удалить строки arr = Cells(1, lCol).Resize(lLastRow).Value ‘Получаем с Лист2 значения, которые надо удалить в активном листе With Sheets(«Лист2») ‘Имя листа с диапазоном значений на удаление avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) End With ‘удаляем Dim rr As Range For lr = 1 To UBound(avArr, 1) sSubStr = avArr(lr, 1) For li = 1 To lLastRow ‘цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li DoEvents Next lr If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Чтобы код выше удалял строки не по точному совпадению слов, а по частичному(например, в ячейке записано «Привет, как дела?», а в списке есть слово «привет» — надо удалить, т.к. есть слово «привет»), то надо строку:

If CStr(arr(li, 1)) = sSubStr Then

заменить на такую:

If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then

‘процедура оставляет в листе только те значения, которые перечислены в списке Sub LeaveOnlyFoundInArray() Dim sSubStr As String ‘искомое слово или фраза Dim lCol As Long ‘номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long Dim arr Dim IsFind As Boolean lCol = Val(InputBox(«Укажите номер столбца, в котором искать указанное значение», «www.excel-vba.ru», 1)) If lCol = 0 Then Exit Sub Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row — 1 + ActiveSheet.UsedRange.Rows.Count ‘заносим в массив значения листа, в котором необходимо удалить строки arr = Cells(1, lCol).Resize(lLastRow).Value ‘Получаем с Лист2 значения, которые надо удалить в активном листе With Sheets(«Лист2») ‘Имя листа с диапазоном значений на удаление avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) End With ‘удаляем Dim rr As Range For li = 1 To lLastRow ‘цикл с первой строки таблицы до конца IsFind = False For lr = 1 To UBound(avArr, 1) ‘цикл по списку значений на удаление sSubStr = avArr(lr, 1) If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then IsFind = True End If DoEvents Next lr ‘если значение таблицы не найдено в списке — удаляем строку If Not IsFind Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Чтобы код выше сравнивал значения таблицы со значениями списка по точному совпадению слов, а не по частичному, то надо строку:

If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then

заменить на такую:

If CStr(arr(li, 1)) = sSubStr Then

Для всех приведенных кодов можно строки не удалять, а скрывать. Для этого надо строку:

If Not rr Is Nothing Then rr.EntireRow.Delete

заменить на такую:

If Not rr Is Nothing Then rr.EntireRow.Hidden = True

По умолчанию все коды начинают просмотр строк с первой по последнюю заполненную на листе. И если необходимо удалять строки не с первой или не по последнюю, то надо внести корректировки в эту строку:

For li = 1 To lLastRow ‘цикл с первой строки до конца

1 — это первая строка; lLastRow — определяется автоматически кодом и равна номеру последней заполненной строки на листе. Если надо начать удалять строки только с 7-ой строки(например, в первых 6-ти шапка), то код будет выглядеть так:

For li = 7 To lLastRow ‘цикл с седьмой строки до конца

А если надо удалять только с 3-ей по 300-ю, то код будет выглядеть так:

For li = 3 To 300 ‘цикл с третьей строки до трехсотой

Статья помогла? Поделись ссылкой с друзьями!

Источник

Хитрости »

28 Май 2011              644918 просмотров


Как удалить строки по условию?

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

Способ первый:
Использовать встроенное средство Excel — фильтр. Сначала его необходимо «установить» на листе:

  • Выделяем таблицу с данными, включая заголовки. Если их нет — то выделяем с самой первой строки таблицы, в которой необходимо удалить данные
  • устанавливаем фильтр:
    • для Excel 2003: ДанныеФильтрАвтофильтр
    • для Excel 2007-2010: вкладка Данные(Data)Фильтр(Filter)(или вкладка Главная(Home)Сортировка и фильтр(Sort&Filter)Фильтр(Filter))

Теперь выбираем условие для фильтра:

  • в Excel 2003 надо выбрать Условие и в появившейся форме выбрать непосредственно условие(«равно», «содержит», «начинается с» и т.д.), а напротив значение в соответствии с условием.
  • Для 2007-2010 Excel нужно выбрать Текстовые фильтры(Text Filters) и либо сразу выбрать одно из предлагаемых условий, либо нажать Настраиваемый фильтр(Custom Filter) и ввести значения для отбора в форме

После этого удалить отфильтрованные строки. В 2007 Excel могут возникнуть проблемы с удалением отфильтрованных строк, поэтому рекомендую сначала так же прочитать статью: Excel удаляет вместо отфильтрованных строк — все?! Как избежать.


 
Способ второй:

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

Sub Del_SubStr()
    Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
    Dim lCol As Long      'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim lMet As Long
    Dim arr
 
    sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "www.excel-vba.ru", "")
    If sSubStr = "" Then lMet = 0 Else lMet = 1
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 1))
    If lCol = 0 Then Exit Sub
 
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = 1 To lLastRow 'цикл с первой строки до конца
        If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub

Если значение sSubStr не будет указано, то будут удалены строки, ячейки указанного столбца которых, пустые.
Данный код необходимо поместить в стандартный модуль. Вызвать с листа его можно нажатием клавиш Alt+F8, после чего выбрать Del_SubStr и нажать Выполнить. Если в данном коде в строке
If -(InStr(Cells(li, 1), sSubStr) > 0) = lMet Then
вместо = lMet указать <> lMet, то удаляться будут строки, не содержащие указанное для поиска значение. Иногда тоже удобно.
Но. Данный код просматривает строки на предмет частичного совпадения указанного значения. Например, если Вы укажете текст для поиска «отчет», то будут удалены все строки, в которых встречается это слово(«квартальный отчет», «отчет за месяц» и т.д.). Это не всегда нужно. Поэтому ниже приведен код, который будет удалять только строки, указанные ячейки которых равны конкретно указанному значению:

Sub Del_SubStr()
    Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
    Dim lCol As Long 'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim arr
 
    sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "www.excel-vba.ru", "")
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 1))
    If lCol = 0 Then Exit Sub
 
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
 
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = 1 To lLastRow 'цикл с первой строки до конца
        If CStr(arr(li, 1)) = sSubStr Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub

Здесь так же, как и в случае с предыдущим кодом можно заменить оператор сравнения(Cells(li, lCol) = sSubStr) с равно на неравенство(Cells(li, lCol) <> sSubStr) и тогда удаляться будут строки, значения ячеек которых не равно указанному.


УДАЛЕНИЕ СТРОК НА ОСНОВАНИИ СПИСКА ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Иногда бывают ситуации, когда необходимо удалить строки не по одному значению, а по нескольким. Например, если строка содержит или Итог или Отчет. Ниже приведен код, при помощи которого можно удалить строки, указав в качестве критерия диапазон значений.
Значения, которые необходимо найти и удалить перечисляются на листе с именем «Лист2». Т.е. указав на «Лист2» в столбце А(начиная с первой строки) несколько значений — они все будут удалены. Если лист называется иначе(скажем «Соответствия») в коде необходимо будет «Лист2» заменить на «Соответствия». Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.

Sub Del_Array_SubStr()
    Dim sSubStr As String    'искомое слово или фраза
    Dim lCol As Long    'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim avArr, lr As Long
    Dim arr
 
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 1))
    If lCol = 0 Then Exit Sub
    Application.ScreenUpdating = 0
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    'заносим в массив значения листа, в котором необходимо удалить строки
    arr = Cells(1, lCol).Resize(lLastRow).Value
    'Получаем с Лист2 значения, которые надо удалить в активном листе
    With Sheets("Лист2") 'Имя листа с диапазоном значений на удаление
        avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
    'удаляем
    Dim rr As Range
    For lr = 1 To UBound(avArr, 1)
        sSubStr = avArr(lr, 1)
        For li = 1 To lLastRow 'цикл с первой строки до конца
            If CStr(arr(li, 1)) = sSubStr Then
                If rr Is Nothing Then
                    Set rr = Cells(li, 1)
                Else
                    Set rr = Union(rr, Cells(li, 1))
                End If
            End If
            DoEvents
        Next li
        DoEvents
    Next lr
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub

Чтобы код выше удалял строки не по точному совпадению слов, а по частичному(например, в ячейке записано «Привет, как дела?», а в списке есть слово «привет» — надо удалить, т.к. есть слово «привет»), то надо строку:

If CStr(arr(li, 1)) = sSubStr Then

заменить на такую:

If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then

УДАЛЕНИЕ ИЗ ЛИСТА СТРОК, КОТОРЫХ НЕТ В СПИСКЕ ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)

Т.к. в последнее время стало поступать все больше и больше вопросов как не удалять значения по списку, а наоборот — оставить в таблице только те значения, которые перечислены в списке — решил дополнить статью и таким кодом.
Значения, которые необходимо оставить перечисляются на листе с именем «Лист2». Т.е. указав на «Лист2» в столбце А(начиная с первой строки) несколько значений — после работы кода на листе будут оставлены только те строки, в которых присутствует хоть одно из перечисленных в списке значений. Если лист называется иначе(скажем «Соответствия») в коде необходимо будет «Лист2» заменить на «Соответствия». Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.
В отличие от приведенных выше кодов, данный код ориентирован на то, что значения в списке указаны не полностью. Т.е. если необходимо оставить только те ячейки, в которых встречается слово «активы», то в списке надо указать только это слово. В этом случае если в ячейке будет записана фраза «Нематериальные активы» или «Активы сторонние» — эти ячейки не будут удалены, т.к. в них встречается слово «активы». Регистр букв при этом неважен.

'процедура оставляет в листе только те значения, которые перечислены в списке
Sub LeaveOnlyFoundInArray()
    Dim sSubStr As String   'искомое слово или фраза
    Dim lCol As Long        'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim avArr, lr As Long
    Dim arr
    Dim IsFind As Boolean
 
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www.excel-vba.ru", 1))
    If lCol = 0 Then Exit Sub
    Application.ScreenUpdating = 0
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    'заносим в массив значения листа, в котором необходимо удалить строки
    arr = Cells(1, lCol).Resize(lLastRow).Value
    'Получаем с Лист2 значения, которые надо удалить в активном листе
    With Sheets("Лист2") 'Имя листа с диапазоном значений на удаление
        avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
    'удаляем
    Dim rr As Range
    For li = 1 To lLastRow 'цикл с первой строки таблицы до конца
        IsFind = False
        For lr = 1 To UBound(avArr, 1) 'цикл по списку значений на удаление
            sSubStr = avArr(lr, 1)
            If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then
                IsFind = True
            End If
            DoEvents
        Next lr
        'если значение таблицы не найдено в списке - удаляем строку
        If Not IsFind Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
        DoEvents
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub

Чтобы код выше сравнивал значения таблицы со значениями списка по точному совпадению слов, а не по частичному, то надо строку:

If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then

заменить на такую:

If CStr(arr(li, 1)) = sSubStr Then

Для всех приведенных кодов можно строки не удалять, а скрывать. Для этого надо строку:

If Not rr Is Nothing Then rr.EntireRow.Delete

заменить на такую:

If Not rr Is Nothing Then rr.EntireRow.Hidden = True

По умолчанию все коды начинают просмотр строк с первой по последнюю заполненную на листе. И если необходимо удалять строки не с первой или не по последнюю, то надо внести корректировки в эту строку:

For li = 1 To lLastRow 'цикл с первой строки до конца

1 — это первая строка; lLastRow — определяется автоматически кодом и равна номеру последней заполненной строки на листе. Если надо начать удалять строки только с 7-ой строки(например, в первых 6-ти шапка), то код будет выглядеть так:

For li = 7 To lLastRow 'цикл с седьмой строки до конца

А если надо удалять только с 3-ей по 300-ю, то код будет выглядеть так:

For li = 3 To 300 'цикл с третьей строки до трехсотой

Так же см.:
Что такое макрос и где его искать?
Что такое модуль? Какие бывают модули?
Как создать кнопку для вызова макроса на листе
Удаление всех пустых строк в таблице
Удаление пустых столбцов на листе
Установить Быстрый фильтр
Фильтр


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Понравилась статья? Поделить с друзьями:
  • Очистить ячейки при изменении ячейки excel
  • Очистить ячейки в excel с определенным значением
  • Очистить форматы в excel что это
  • Очистить форматы word 2007
  • Очистить форматирование ячеек excel