Как удалить несколько строк без цикла в Excel VBA. Vba excel удалить строку


Excel VBA Удалить строку на основе содержимого ячейки

У меня почти нет опыта работы с vba, и я пытаюсь написать макрос Excel, который будет проверять содержимое ячеек в столбце Q и удалять строки, в которых есть 0 в этом column (Строки, в которых ячейка в столбце Q пуста, содержит текст или содержит число, отличное от 0, должно быть оставлено без изменений). Макрос должен начать проверять ячейки в столбце Q в ячейке Q11 и останавливаться, когда он встречает ячейку, содержащую текст «END». Когда закончите, он должен выбрать ячейку в верхнем левом углу таблицы, которая обычно будет A1, но у меня есть объединенная ячейка, так что это A1: K2.

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

'My second to last attempt Sub DeleteRowMacro1() Dim i As Integer i = 11 Do Cells(i, 17).Activate If ActiveCell.Value = 0 Then ActiveCell.EntireRow.Delete End If i = i + 1 Loop Until ActiveCell.Value = "END" Range("A1:K2").Select End Sub 'My last attempt Sub DeleteRowMacro2() Dim i As Integer i = 11 GoTo Filter Filter: Cells(i, 17).Activate If ActiveCell.Value = "END" Then GoTo EndingCondition If ActiveCell.Value = "" Then GoTo KeepCondition If ActiveCell.Value = 0 Then GoTo DeleteCondition If ActiveCell.Value > 0 Then GoTo KeepCondition EndingCondition: Range("A1:K2").Select KeepCondition: i = i + 1 GoTo Filter DeleteCondition: ActiveCell.EntireRow.Delete i = i + 1 GoTo Filter End Sub

Что DeleteRowMacro1() делает:

DeleteRowMacro1() вроде работает. Он оставляет строку, если в столбце Q есть текст или число больше 0, но оно удаляет строки с ячейками с пустыми ячейками 0 и. Я хочу сохранить строки с пустыми ячейками.

Кроме того, этот макрос не способен проверять 450 или около того ячеек между Q11 и ячейкой с «END» за один проход. Он удаляет только половину строк, которые он должен каждый раз, но никак не имеет смысла. Это не похоже на удаление только первой половины строк, которые должны были быть удалены. Странно, потому что первые 10 или около того строк всегда выполняются правильно, но затем после этого он случайно выбирает строки с нулем или пробелом в столбце Q для удаления. Чтобы прояснить это, НИКОГДА не удаляет строку с текстом или число, отличное от 0 (это правильно и что я хочу), но из ячеек, которые он удаляет, он никогда не удаляет все из них одновременно и никогда не удаляет их в порядке, (кроме тех первых 10 или около того, о которых я уже упоминал).

Если я запустил макрос 7 или 8 раз, он в конечном итоге удалит все строки с 0 (и, к сожалению, те, которые тоже пусты), но я бы хотел, чтобы он полностью выполнил свою работу за один проход и не удалять строки с пустыми ячейками.

Замечание: на самом деле не имеет значения, что он проскакивает при проверке ячеек, чтобы определить, нужно ли удалять строку, но мне показалось странным, поэтому я подумал, что должен упомянуть об этом на случай, если это что-то сделать почему я должен запустить его 7 или 8 раз, чтобы он выполнил свою работу.

Что DeleteRowMacro2() делает:

DeleteRowMacro2() работает так же, как и предыдущий, но он никогда не останавливается на «END», как другой даже несмотря на это, как предполагается. Тем не менее, он правильно оставляет строки, где ячейка в столбце Q пуста. Мне не удалось получить предыдущий макрос для этого.

Когда я запустил DeleteRowMacro2(), конечный результат почти такой же, как с DeleteRowMacro1(), и я должен запустить его 7 или 8 раз, чтобы полностью избавиться от всех строк с 0 в столбце Q. Как и предыдущий макрос, он также случайно отслеживает ячейки для удаления (и еще раз, кроме первых 10 или около того).

В дополнение к этой проблеме, поскольку она никогда не заканчивается, когда я запускаю ее в области моего экрана, где электронная таблица становится черной, и все, что я вижу, есть зеленая выбранная ячейка ящика, мерцающая вверх и вниз в случайных местах в столбце Q, пока он не достигнет номера строки в 32 000 секунд.После этого мой экран вернется, чтобы отобразить обычную белую таблицу, и появится окно с надписью «Ошибка выполнения» «6»: переполнение.

Обратите внимание: несмотря на то, что я получаю ошибку во время выполнения, после того, как я нажимаю «Конец» в окне ошибки, я могу перейти в верхнюю часть таблицы и увидеть, что макрос обработан был (и я уже описал, что именно он сделал выше).

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

stackoverrun.com

Удаление строк и столбцов в Excel VBA

VBA удаляет столбцы строк excel. Macro помогает автоматизировать удаление строк и столбца в листе Excel с помощью кода VBA. Мы можем удалять строки и столбцы в excel с помощью VBA, если в наших данных есть лишние записи или поля. Например, мы можем удалить удаленные строки в данных, или мы можем удалить строки на основе определенного условия. Мы можем удалить столбцы на основе определенных условий. Домой/Excel VBA/Удаление строк столбцов в Excel VBA

Предыдущий Следующий

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

ПРЕДВАРИТЕЛЬНОЕ ПРЕДЛОЖЕНИЕ

ПО ПРОДАЖЕ 80% ВКЛЮЧИТЕЛЬНО

ПРОСМОТР ВСЕХ ШАБЛОНОВ

50+ ШАБЛОНЫ УПРАВЛЕНИЯ ПРОЕКТАМИ  Excel PowerPoint Word

ПОСМОТРЕТЬ ДЕТАЛИ

РАСШИРЕННЫЙ ПЛАН ПРОЕКТА & ПОРТФЕЛЬНЫЙ ШАБЛОН  Шаблон Excel

ПОСМОТРЕТЬ ДЕТАЛИ

БИЗНЕС-ПРЕЗЕНТАЦИИ ШАБЛОНЫ ПАКЕТ  PowerPoint Slides

ПОСМОТРЕТЬ ДЕТАЛИ

20+ УПРАВЛЕНИЕ ПРОЕКТОМ ПРОГРАММЫ EXCEL  Шаблоны Excel

ПОСМОТРЕТЬ ДЕТАЛИ

20+ УПРАВЛЕНИЕ ПРОЕКТОМ POWERPOINT PACK  PowerPoint Templates

ПОСМОТРЕТЬ ДЕТАЛИ

10+ MS WORD ПАКЕТ УПРАВЛЕНИЯ ПРОЕКТАМИ  Шаблоны Word

ПОСМОТРЕТЬ ДЕТАЛИ

VBA удаляет строки столбцов excel - Удалить строки

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

Удаление строк в Excel VBA: Примеры

Удалить строки в Excel VBA - Примеры: Удаление определенной строки

Следующий пример удалит строку 5 из активного листа.

'В этом примере я удаляю строку 5 Sub sbDeleteARow() Rows(5).Delete End Sub Примеры Excel VBA для удаления нескольких строк во времени

Следующий пример будет удалять строки от 5 до 10 за раз с активной рабочей таблицы.

'В этом примере я удаляю строки с 5 по 10 Sub sbDeleteARowMulti() Rows("5:10").Delete End Sub Примеры VBA для удаления строк На основании определенного условия

В следующем примере будут удалены все строки от 1 до 10, которые имеют четное число в первом столбце.

Sub sbDeleteARowEvenNumbers() Dim lRow 'Последний номер записи lRow = 10 'цикл от последней строки до первой строки Do While lRow >= 1 'если значение ячейки равно, тогда удалите строку If Cells(lRow,1) Mod 2 = 0 Then Rows(lRow).Delete lRow = lRow - 1 Loop End Sub Инструкции
  1. Откройте рабочую книгу Excel
  2. Нажмите Alt + F11, чтобы открыть редактор VBA.
  3. Вставьте модуль для меню вставки
  4. Создайте приведенный выше код и вставьте в окно кода
  5. Сохраните файл в виде макрозаписи
  6. Нажмите F5, чтобы выполнить его

Удаление столбцов в Excel VBA

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

Удаление столбцов в Excel VBA: Примеры

Пример удаления конкретной колонки с помощью VBA

В этом примере я удаляю столбцы D из активного листа.

Sub sbDeleteAColumn() Columns("D").Delete End Sub Удаление нескольких столбцов за раз в Excel с помощью VBA

В этом примере я удаляю столбцы D в F из активного листа с помощью VBA.

Sub sbDeleteAColumnMulti() Columns("D:F").Delete End Sub Удаление столбцов на основе определенных условий в Excel с использованием VBA

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

Sub sbDeleteOddDataColumns() Dim lCol lCol = 10 Do While lCol >= 1 'Если значение ячейки нечетно, столбец удаления If Cells(1, lCol) Mod 2 <> 0 Then Columns(lCol).Delete lCol = lCol - 1 Loop End Sub Инструкции:
  1. Откройте рабочую книгу Excel
  2. Нажмите Alt + F11, чтобы открыть редактор VBA.
  3. Вставьте модуль для меню вставки
  4. Создайте приведенный выше код и вставьте в окно кода
  5. Сохраните файл в виде макрозаписи
  6. Нажмите F5, чтобы выполнить его

vh10295.rdkd.ru

excel-vba - Как удалить несколько строк без цикла в Excel VBA

Во-первых, позвольте мне сказать категорически, что нет ничего плохого в цикле - они, безусловно, имеют свое место!

Недавно нам была представлена ​​следующая ситуация:

400000 | Smith, John| 2.4 | 5.66| =C1+D1 400001 | Q, Suzy | 4.6 | 5.47| =C2+D2 400002 | Schmoe, Joe| 3.8 | 0.14| =C3+D3 Blank | | | | #VALUE Blank | | | | #VALUE

OP хотел удалить строки, где Столбец A пуст, но в столбце E есть значение.

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

Учтите, что вы можете добавить столбец H, чтобы попытаться определить эти строки; в этой строке вы можете использовать формулу, как показано ниже:

=IF(AND(A:A="",E:E<>""),"DELETE THIS ROW","LEAVE THIS ROW")

теперь, можно получить эту формулу, чтобы поместить ошибку в строки, где я тестирую, возвращает True. Причина, по которой мы будем делать это, - это особенность Excel под названием SpecialCells.

В Excel выберите любую пустую ячейку и в строке строки формул

=NA()

Затем нажмите F5 или CTRL + G (перейдите в... в меню Изменить), затем нажмите кнопку Special, чтобы отобразить диалог SpecialCells.

В этом диалоговом окне нажмите радио рядом с "Формулы" и снизу, снимите флажки, чтобы выбрать только Ошибки. Теперь нажмите OK

Excel должен был выбрать все ячейки на листе с ошибкой (# N/A).

Приведенный ниже код использует этот трюк, создавая формулу в столбце H, которая будет помещать # N/A во все строки, которые вы хотите удалить, а затем вызов SpecialCells для поиска строк, и очистить (удалить) их...

Sub clearCells() ' Dim sFormula As String ' ' this formula put an error if the test returns true, ' so we can use SpecialCells function to highlight the ' rows to be deleted!

Создайте формулу, которая вернет #NA, когда формула вернет TRUE

sFormula = "=IF(AND(A:A="""",E:E<>""""),NA(),"""")"

Поместите эту формулу в столбец H, чтобы найти строки, которые нужно удалить...

Range("H5:H" & Range("E65536").End(xlUp).Row).Formula = sFormula

Теперь используйте SpecialCells, чтобы выделить удаляемые строки:

Range("H5:H" & Range("E65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).entirerow.select

Эта строка кода выделяет только столбец A с помощью OFFSET, если вместо удаления всей строки вы хотите вставить текст или очистить его

Range("H5:H" & Range("E65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).Offset(0, -7).select

и нижняя строка кода удалит всю строку , потому что мы можем:)

Range("H5:H" & Range("E65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete shift:=xlup ' clean up the formula Range("H5:H" & Range("E65536").End(xlUp).Row).Clear ' End Sub

Кстати, также возможно WITH A LOOP, если вы действительно этого хотите:)

Еще одна вещь, перед Excel 2010 был предел 8192 строк (я думаю, потому что эта функция полностью вернулась к 8-разрядным версиям Excel)

Легенда VBA Рон де Бруин (на чей сайт я впервые взял эту технику, среди прочих) есть что сказать об этом

Филипп

qaru.site

Excel VBA – удалить часть строки MS Excel онлайн

Я пытаюсь удалить часть строки. Например mystring="site, site text, sales "

Я хочу удалить « сайт » из mystring. Мой требуемый результат – «текст сайта, продажи»,

Я не уверен, как это сделать, и я очень благодарен за вашу помощь!

replace("site, site text, sales ","site, ","",1,1)

Вы также можете отправить в качестве параметра начальную позицию, а затем количество раз, которое вы хотите заменить … (по умолчанию -1)

Вы также можете использовать функцию MID VB пользователя следующим образом:

Mystring=Mid(myString, 6)

вывода будет «текст сайта, продажи»,

Просто укажите количество символов, которые вы хотите удалить в части номера .

Здесь есть много разных вариантов:

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

s1 = Trim(Replace(mystring, "site,", ""))

Укажите количество времени, в которое вы хотите заменить строку (сначала «1» – это начало, второе – количество замен)

s1 = Trim(Replace(mystring, "site,", "",1,1))

Или жесткий / плохой способ, чтобы разложить вашу строку на две части после первого появления, а затем рекомбинировать, чтобы получить результат …

TempStart = Left(mystring, InStr(1, mystring, "site") + Len(mystring) + 1) TempEnd = Replace(mystring, TempStart, "") TempStart = Replace(TempStart, "site", "") mystring = CStr(TempStart & TempEnd)

В моем случае я хотел удалить часть строк, которая была между «[» и «]». И следующий код работал отлично.

Итак, с исходной строкой в ​​столбце A (и решением в столбце B):

Sub remove_in_string() Dim i, lrowA, remChar As Long Dim mString As String lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lrowA mString = Cells(i, 1).Value If InStr(mString, "[") > 0 Then remChar = InStr(mString, "]") - InStr(mString, "[") + 1 Cells(i, 2).Value = Left(mString, Len(mString) - remChar) ElseIf InStr(mString, "[") = 0 Then Cells(i, 2).Value = Cells(i, 1).Value End If Next End Sub

excel.bilee.com

Как удалить строку vba?

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

Инструкция
  • Убедитесь в том, что понятен синтаксис команды удаления строки с использованием команды Delete. Так для строки, содержащей активную ячейку, команда будет выглядеть как ActiveCell.EntireRow.Delete, а необходимость удаления некоторого количества строк изменит ее на Rows ("номер_первой_строки : номер_последней_строки").Delete (для Excel).
  • Используйте подобный синтаксис команды удаления выбранной строки и в VBA, но с расширенными параметрами. Для этого прежде всего определите необходимое действие: Private Sub Удаление строки_Click().Укажите нужное приложение Dim ea As Excel.Application и выберите необходимую рабочую книгу Dim ewb As Excel.Workbook. Затем укажите подлежащую редактированию странице документа Dim ews As Excel.Worksheet.
  • Пропустите одну строчку и введите значение Set XLAp = CreateObject (Class :="Excel.Application"). Задайте точное размещение в следующей строке: Set XLWb = XLAp.Workbooks. Open ("имя_диска:1.xls").Воспользуйтесь следующим значением: Set XLWs = XLWb.ActiveSheet.
  • Пропустите еще одну строку и введите значение выбранного задания:XLWs.Rows (1). Delete.Сохраните редактирование документа: XLWb.Save. Завершите работу программно открытого приложения: XLAp.Quit.
  • Пропустите следующую строку и замените переменные на объекты из памяти: Set XLWs = Nothing.Повторите эту же команду для каждой открытой переменной: Set XLWb = Nothingи, наконец, последней: Set XLAp = Nothing.Завершите команду введением стандартного End Sub.
  • Используйте макросы для выполнения и более сложных операций по удалению ненужных строк документа. Для этого создайте новую книгу приложения Excel и введите требуемые значения. Раскройте меню «Сервис» верхней панели инструментов окна программы и укажите пункт «Макрос». Выберите подпункт «Редактор Visual Basic» и раскройте меню «Вставка». Укажите пункт «Модуль» и вставьте созданный документ. Вернитесь в меню «Сервис» и снова перейдите в пункт «Макрос». Воспользуйтесь подпунктом «Макросы» и укажите только что созданный. Запустите макрос нажатием кнопки «Выполнить».
  • Оцените статью!

    imguru.ru



    О сайте

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