Excel vba удалить строку со сдвигом вверх

Обновлено: 07.07.2024

У меня есть этот кусок кода, который находит строку excel элемента из списка и удаляет элементы из списка. Чего я хочу. чтобы удалить строку в Excel.

где я добавил ws.Диапазон (Rand, 1).EntireRow.Удалить это, где я хочу удалить всю строку, но я не знаю как это сделать. Чего я хочу. если он находит то же значение в ячейке, как в каком-либо выбранном элементе моего списка, чтобы иметь возможность удалить как всю строку в excel, так и пункт из списка. Он работает, чтобы удалить элемент из списка, но я не знаю как удалить строку также

решение Криса Нильсена простое и будет работать хорошо. Немного более короткий вариант.

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

Кстати, мой предпочтительный метод удаления строк-использовать.

. в начальном цикле. Затем я использую функцию сортировки, чтобы переместить эти строки в нижнюю часть данных. Основная причина этого заключается в том, что удаление одиночные строки могут быть очень медленной процедурой (если вы удаляете >100). Это также гарантирует, что ничего не пропущено в соответствии с комментарием Роберта Илбринка

вы можете узнать код для сортировки, записав макрос и уменьшив код, как показано в этом эксперт Excel видео. У меня есть подозрение, что самый аккуратный метод (диапазон("A1:Z10").Сортировать Ключ1:=ряд("А1"), Order1:=xlSortAscending/убыванию, заголовок:=xlYes/нет) могут быть открыты только по предварительной 2007 версии Excel. но вы можете всегда уменьшайте эквивалентный код 2007/2010

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

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

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

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


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

В VBA Удалить строку используется для удаления либо набора строк, либо отдельной строки в зависимости от ситуации. Подобно листу Excel, мы можем использовать макросы или VBA для удаления строк в листе Excel. Это помогает, когда у нас много данных, и мы не можем сделать это вручную.

Синтаксис для удаления строки в Excel VBA

Синтаксис для удаления строки в Excel, как показано ниже.

Есть также другие методы удаления строк с использованием VBA, такие как следующие.

Range ( «Cell»). EntireRow.Delete

То, что будет делать вышеприведенный оператор, - это удаление строки для данной строки. Например, если мы напишем Range («A1»). FullRow.Delete, то первая строка будет удалена, так как ячейка A1 принадлежит первой строке.

Также мы можем использовать Rows (row_num) .delete для удаления строки.

Как удалить строку в Excel, используя VBA?

Ниже приведены некоторые примеры того, как удалить строку в Excel с помощью VBA.

Вы можете скачать этот шаблон VBA Удалить строку Excel здесь - VBA Удалить шаблон Excel строку

VBA Delete Row - Пример № 1

Давайте используем первый простой метод для удаления строк. Для демонстрации я введу случайное значение в ячейки A1 и B1. Посмотрите на это ниже.


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

Примечание. Для использования Excel VBA необходимо включить вкладку разработчика на вкладке «Файлы» в разделе параметров.

Выполните следующие шаги, чтобы удалить строку в Excel с помощью VBA.

Шаг 1. Перейдите на вкладку разработчика, щелкните Visual Basic, чтобы открыть редактор VBA.


Шаг 2: В сегменте кода объявите подфункцию, чтобы начать писать код.

Код:


Шаг 3: Теперь напишите следующий код, чтобы удалить строку.

Код:


Шаг 4: Запустите этот код, нажав F5 или кнопку Run, и посмотрите результат.

Запустив код, мы увидим, что значения из ячеек A1 и B1 удаляются, поскольку вся первая строка была удалена.

VBA Delete Row - Пример № 2

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


Я хочу удалить все первые пять строк. Выполните следующие шаги, чтобы удалить строку в Excel с помощью VBA.

Шаг 1. На вкладке разработчика щелкните Visual Basic, чтобы открыть редактор VBA.

Шаг 2: В коде объявите подфункцию, чтобы начать писать код,

Код:


Шаг 3: Напишите следующий код, показанный ниже, чтобы удалить все пять строк.

Код:


Шаг 4: Запустите этот код, нажав F5 или кнопку Run, и посмотрите результат.

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

Примечание: я вставлю данные обратно в образец листа Excel для демонстрации.

VBA Delete Row - Пример № 3

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

Посмотрите на данные ниже,


Выполните следующие шаги, чтобы удалить строку в Excel с помощью VBA.

Шаг 1. На вкладке разработчика щелкните Visual Basic, чтобы открыть редактор Visual Basic.

Шаг 2: Объявите подфункцию в окне кода, чтобы начать писать код,

Код:


Шаг 3: Напишите следующий код, чтобы удалить строки с пустыми ячейками.

Код:


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

Шаг 4: Запустите этот код, нажав F5 или кнопку Run, и посмотрите результат.

Запустив код, мы увидим, что строка с пустыми ячейками была удалена.

Примечание: я снова вставлю данные в образец листа Excel для демонстрации.

VBA Delete Row - Пример № 4

Существуют и другие подобные методы удаления строк, например, использование строк и функция удаления. Например, у нас есть данные в строке 4, и я хочу удалить строку 4. Мы можем дать команду Excel для удаления 4- й строки в данных. Посмотрите на скриншот ниже. У меня есть случайные данные в строке 4 в первой ячейке.


Выполните следующие шаги, чтобы удалить строку в Excel с помощью VBA.

Шаг 1. Откройте редактор VBA, щелкнув Visual Basic на вкладке разработчика.

Шаг 2: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 3: Напишите следующий код для удаления 4-й строки.

Код:


Шаг 4: Запустите этот код, нажав F5 или кнопку Run, и посмотрите результат.

Данные были удалены, так как 4- я строка была удалена сама.

VBA Delete Row - Пример № 5

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


Выполните следующие шаги, чтобы удалить строку в Excel с помощью VBA.

Шаг 1: Откройте VB Editor, нажав Visual Basic на вкладке разработчика,

Шаг 2: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 2: Объявите две переменные как диапазон, A и B.

Код:


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

Код:


Шаг 4: Установите B = A, чтобы ввод от пользователя можно было сохранить в диапазоне B.

Код:


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

Код:


Шаг 6: Теперь запустите код с помощью кнопки запуска.


Шаг 6: Появляется поле ввода.


Шаг 7: Выберите диапазон от A1: D8 в этом примере. Нажмите OK, чтобы увидеть результат.


Данные с пустыми ячейками были удалены.


То, что нужно запомнить

Есть несколько вещей, которые мы должны помнить об удалении строки в Excel VBA:

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

Рекомендуемые статьи

Это был путеводитель по VBA Delete Row. Здесь мы обсудили, как удалить строку в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

где lis строковая переменная, которая определена и равна имени существующего листа, j - вполне конкретный счётчик, priznak таки равен 0. Хоть плачь!

М.б. у кого-то хватит духу запустить макрос sinxron из прилагаемого файла? Ежели, к примеру, указанную инструкцию заменить на
If priznak = 0 Then Sheets(lis).Rows(j).Delete, то всё работает! Но мне не строку надо удалить, а указанный диапазон со смещением вверх

P.S. Макрос сравнивает записи с листа "isx" с записями по соответствующим 10 блокам (листы bl1. bl10). Если на листе "isx" они присутствуют, а на соответствующем блоке нет, то на блоковый лист запись добавляется. И наоборот, если в блоковых списках запись присутствует, а на главном листе таковой нет, то с листа блокового запись удаляется

Добрый день!
Никак не могу обойти ошибку 1004. Возникает при выполнении
If priznak = 0 Then Sheets(lis).Range(Cells(j, 1), Cells(j, 9)).Delete Shift:=xlShiftUp - почему то не нравится указанный Range.

где lis строковая переменная, которая определена и равна имени существующего листа, j - вполне конкретный счётчик, priznak таки равен 0. Хоть плачь!

М.б. у кого-то хватит духу запустить макрос sinxron из прилагаемого файла? Ежели, к примеру, указанную инструкцию заменить на
If priznak = 0 Then Sheets(lis).Rows(j).Delete, то всё работает! Но мне не строку надо удалить, а указанный диапазон со смещением вверх

P.S. Макрос сравнивает записи с листа "isx" с записями по соответствующим 10 блокам (листы bl1. bl10). Если на листе "isx" они присутствуют, а на соответствующем блоке нет, то на блоковый лист запись добавляется. И наоборот, если в блоковых списках запись присутствует, а на главном листе таковой нет, то с листа блокового запись удаляется Red_Garry

где lis строковая переменная, которая определена и равна имени существующего листа, j - вполне конкретный счётчик, priznak таки равен 0. Хоть плачь!

М.б. у кого-то хватит духу запустить макрос sinxron из прилагаемого файла? Ежели, к примеру, указанную инструкцию заменить на
If priznak = 0 Then Sheets(lis).Rows(j).Delete, то всё работает! Но мне не строку надо удалить, а указанный диапазон со смещением вверх

Удалите строки выше с кодами VBA

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

1. Выберите ячейку, над которой вы хотите удалить строки, и нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модуль, и вставьте ниже код в Модуль скрипты.

VBA: удалить строки над активной ячейкой

документ удалить строки выше 1

документ удалить строки выше 2

3. Нажмите F5 key, то строки над активной ячейкой были удалены. Смотрите скриншот:

Если вы хотите удалить строки над указанным текстом, вы можете использовать VBA ниже.

VBA: удалить строки над указанным текстом

документ удалить строки выше 3

Примечание:

1. В коде Общая группа это текст, который вы хотите найти, вы можете изменить его по своему усмотрению.

документ удалить строки выше 4

2. Если найденный текст уже был в первой строке, появится диалоговое окно с напоминанием.

документ удалить строки выше 5

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

Читайте также: