Как удалить строку по значению ячейки

У меня есть рабочий лист, мне нужно удалить строки на основе значения ячейки.

Ячейки для проверки находятся в столбце A ..

Если ячейка содержит «-» .. Удалить строку

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

Здесь нужна помощь.

ОБНОВЛЕНИЕ

Образец имеющихся у меня данных


Снимок экрана был очень полезным — следующий код выполнит свою работу (при условии, что данные находятся в столбце A, начиная с A1):

  Sub RemoveRows () Dim i As Longi = 1Do While i  0 Then ThisWorkbook.ActiveSheet.Cells (i, 1) .EntireRow.Delete Else i = i + 1 End IfLoopEnd Sub  

Общий доступ к файлу образца: https ://ww w.dropbox.com/s/2vhq6vw7ov7ssya/RemoweDashRows.xlsm


Самый простой способ сделать это — для использования фильтра.

Вы можете либо отфильтровать любые ячейки в столбце A, у которых нет знака «-» и скопировать/вставить, либо (мой более предпочтительный метод) отфильтровать все ячейки, которые есть «-«, а затем выберите все и удалите. После удаления фильтра у вас остается то, что вам нужно.

Надеюсь, это поможет.


Самый простой способ сделать это — использовать фильтр.

Вы можете отфильтровать любые ячейки в столбце A, у которых нет «-» и копировать/вставить или (мой более предпочтительный метод) фильтровать все ячейки, у которых есть «-», а затем выбрать все и удалить — после удаления фильтра у вас останется то, что вам нужно.

Надеюсь, это поможет.


Вы можете скопировать формулу, подобную следующей, в новый столбец …

   = IF (ISNUMBER (FIND ("-", A1)), 1,0)  

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


Вы можете скопировать формулу, подобную следующей, в новый столбец …

  =IF(ISNUMBER(FIND("-",A1)),1,0) 

… затем отсортируйте по этому столбцу, выделите все строки где значение равно 1, и удалите их.


, если вы хотите удалить строки на основе определенного значения ячейки .Предположим, у нас есть файл, содержащий 10000 строк и поля, имеющие значение NULL. и на основе этого нулевого значения мы хотим удалить все эти строки и записи.

вот несколько простых советов. откройте диалоговое окно Find Replace и на вкладке Replace сделайте все ячейки, содержащие значения NULL, с пустыми. затем нажмите F5 и выберите параметр «Пустой», щелкните правой кнопкой мыши активный лист и выберите «Удалить», затем параметр «Вся строка».

он удалит все эти строки на основе значения ячейки, содержащей слово NULL .


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

вот несколько простых советов. Сначала откройте диалоговое окно Find Replace и на вкладке Replace сделайте все эти ячейки, содержащие Значения NULL с пустым. Затем нажмите F5 и выберите параметр «Пустой», затем щелкните правой кнопкой мыши активный лист и выберите «Удалить», затем параметр «Вся строка».

он удалит все эти строки на основе ячейки значение, содержащее слово NULL.


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


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


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

  Sub DeleteRowsWithHyphen () Dim rng As Range For Each rng In Range ("A2: A10") 'Диапазон значений для циклического прохождения If InStr (1, rng  .Value, "-")> 0 Тогда 'InStr возвращает целое число позиции, если больше 0 - Оно содержит строку rng.Delete End If Next rngEnd Sub  


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

  Sub DeleteRowsWithHyphen () Dim rng As Range For Each rng In Range ("A2: A10") 'Диапазон значений для циклического прохождения If InStr (1, rng  .Value, "-")> 0 Тогда 'InStr возвращает целое число позиции, если больше 0 - Он содержит строку rng.Delete End If Next rngEnd Sub  

Это макрос автофильтра, на основе которого вы можете создать функцию:

  Selection.AutoFilterActiveSheet.Range  ("$ A $ 1: $ A $ 10"). Поле автофильтра: = 1, Criteria1: = "= * - *", Оператор: = xlAndSelection. Автофильтр  

Я использую эту функцию автофильтрации для удаления совпадающих строк:

  Public Sub FindDelete (sCol As String, vSearch As Variant)  'Простой поиск и удалениеDim lLastRow As IntegerDim rng As RangeDim rngDelete As Range Range (sCol & 1) .Select [2: 2] .Insert Range (sCol & 2) = "temp" с ActiveSheet .usedrange lLastRow = .Cells.SpecialCells (  xlCellTypeLastCell) .Row Set rng = Range (sCol & 2, Cells (lLastRow, sCol)) rng.AutoFilter Field: = 1, Criteria1: = vSearch, Operator: = xlAnd Set rngDelete = rng.SpecialCells (xlCellelete) rng.  .EntireRow.Delete .usedrange End WithEnd Sub  

назовите это так:

  call FindDelete "A", "= * -  * " 

Это сэкономило мне много работы. Удачи!


Это макрос автофильтра, на основе которого вы можете создать функцию:

  Selection.AutoFilterActiveSheet.Range ("$ A $ 1: $ A $ 10"). Поле автофильтра: = 1, Criteria1: = "= * - *", Оператор: = xlAndSelection.AutoFilter  

Я использую эту функцию автофильтрации для удаления совпадающих строк:

  Public Sub FindDelete (sCol As String, vSearch As Variant) 'Простой поиск и DeleteDim lLastRow As IntegerDim rng As RangeDim  rngDelete As Range Range (sCol & 1) .Select [2: 2] .Insert Range (sCol & 2) = "temp" с ActiveSheet .usedrange lLastRow = .Cells.SpecialCells (xlCellTypeLastCell) .Row Set rng = Range (sCol &  2, Cells (lLastRow, sCol)) Поле rng.AutoFilter: = 1, Criteria1: = vSearch, Operator: = xlAnd Set rngDelete = rng.SpecialCells (xlCellTypeVisible) rng.AutoFilter rngDelete.EntireRow.Delete/With  code> 

назовите это так:

  вызовите FindDele  te "A", "= * - *"  

Это сэкономило мне много работы. Удачи!

Оцените статью
techsly.ru
Добавить комментарий