УДАЛИТЬ из строк таблицы ListObject, соответствующих условию, с помощью VBA

Возможно ли в VBA УДАЛИТЬ все строки, соответствующие условию, из таблицы Excel ListObject? Я ищу что-то похожее на оператор SQL:

DELETE FROM MyListObjectTable WHERE MyColumn='Some Condition'


person Przemyslaw Remin    schedule 28.03.2017    source источник
comment
Он подключен к источнику? Вы хотите удалить их из источника? Если нет, я бы использовал условие ‹› в sql для таблицы. Вы пробовали что-нибудь?   -  person Nathan_Sav    schedule 28.03.2017
comment
Он подключен к SQL, однако при необходимости я могу разорвать это соединение. Я попытался сделать это через ADO Connection, аналогично тому, что вы можете найти здесь: stackoverflow.com/a/33807584/1903793   -  person Przemyslaw Remin    schedule 28.03.2017
comment
используйте listobject.querytable.connection для создания ado и execute sql, который у вас есть, затем обновите таблицу.   -  person Nathan_Sav    schedule 28.03.2017
comment
если какое-то условие существует в C3, то Set listObj = ActiveSheet.ListObjects(Table1) -следующая строка - listObj.ListRows(3).Delete   -  person John Muggins    schedule 28.03.2017
comment
@JohnMuggins У меня огромный стол. Я хотел бы делать массовые удаления, а не одиночные или циклические. Лучше из вашего предложения было бы удаление с автофильтром. Однако SQL-подобные операторы намного лучше для ясности.   -  person Przemyslaw Remin    schedule 28.03.2017
comment
Работают ли операторы SQL в VBA? Если бы это был я, я бы использовал метод range.find, чтобы найти каждое условие в столбце и сохранить эту строку в массиве. Затем переставьте массив в порядке убывания и удалите строки с помощью оператора for.   -  person John Muggins    schedule 28.03.2017


Ответы (1)


Попробуй это:

.- Разорвать связь,

.- Сортировать ListObject по условию (необязательно, чтобы результаты условия были в одном Range.Area для удаления),

.- AutoFilter ListObject по условию,

.- Удалить видимые строки ListObject.DataBodyRange

.- Очистить AutoFilter

person EEM    schedule 28.03.2017