Ребят, помогите пожалуйста с макросом. Нужно сравнить в умной таблице tblData1C графу Код с такой же графой таблицы tblDel, и все строки, в которых совпадают значения, нужно удалить в таблице tblData1C. Важно чтобы в макросе были прописаны пути именно к самим таблицам примерно так: Sheets("1С").ListObjects("tblData1C").ListColumns("Код"). И так же важно применить удаление не просто строк, а именно удаление строк таблицы.
Ребят, помогите пожалуйста с макросом. Нужно сравнить в умной таблице tblData1C графу Код с такой же графой таблицы tblDel, и все строки, в которых совпадают значения, нужно удалить в таблице tblData1C. Важно чтобы в макросе были прописаны пути именно к самим таблицам примерно так: Sheets("1С").ListObjects("tblData1C").ListColumns("Код"). И так же важно применить удаление не просто строк, а именно удаление строк таблицы.AndreiSMT
Можно без макроса, просто фильтром. Данные --> Сортировка и фильтр --> Дополнительно --> Скопировать результат в другое место --> Искомый диапазон: выделяйте всю таблицу вместе с шапкой --> Диапазон условий: выделяйте диапазон на листе del тоже вместе с шапкой (ВАЖНО имя столбца шапки должно совпадать с именем столбца в основной таблице по которому должны фильтровать) --> Поместить результат в другое место: выделяйте ячейку ниже основной таблицы --> OK
Можно без макроса, просто фильтром. Данные --> Сортировка и фильтр --> Дополнительно --> Скопировать результат в другое место --> Искомый диапазон: выделяйте всю таблицу вместе с шапкой --> Диапазон условий: выделяйте диапазон на листе del тоже вместе с шапкой (ВАЖНО имя столбца шапки должно совпадать с именем столбца в основной таблице по которому должны фильтровать) --> Поместить результат в другое место: выделяйте ячейку ниже основной таблицы --> OKmsi2102
msi2102, спасибо большое что просветили темноту. Я не знал о таких возможностях. Но к моему сожалению такой вариант не подходит. Нужен именно макрос. Вот тут господин Казанский предложил замечательный макрос удаления пустых строк в умной таблице: [vba]
Код
Sub Макрос4() With ActiveSheet.ListObjects(1) .Range.AutoFilter .Range.AutoFilter Field:=1, Criteria1:="=0", Operator:=xlOr, Criteria2:="=" Application.DisplayAlerts = False On Error Resume Next .DataBodyRange.SpecialCells(xlCellTypeVisible).Delete Application.DisplayAlerts = True .Range.AutoFilter End With End Sub
[/vba] Но как этому макросу объяснить что нужно удалять строки с совпадающим кодом для меня это очень сложно, увы. Люди добрые помогите пожалуйста.
msi2102, спасибо большое что просветили темноту. Я не знал о таких возможностях. Но к моему сожалению такой вариант не подходит. Нужен именно макрос. Вот тут господин Казанский предложил замечательный макрос удаления пустых строк в умной таблице: [vba]
Код
Sub Макрос4() With ActiveSheet.ListObjects(1) .Range.AutoFilter .Range.AutoFilter Field:=1, Criteria1:="=0", Operator:=xlOr, Criteria2:="=" Application.DisplayAlerts = False On Error Resume Next .DataBodyRange.SpecialCells(xlCellTypeVisible).Delete Application.DisplayAlerts = True .Range.AutoFilter End With End Sub
[/vba] Но как этому макросу объяснить что нужно удалять строки с совпадающим кодом для меня это очень сложно, увы. Люди добрые помогите пожалуйста.AndreiSMT
Сообщение отредактировал AndreiSMT - Четверг, 31.07.2025, 07:25
Вот макрос, если есть Код в таблице tblDel то удаляет строки с таким же кодом из строки из таблицы "tblData1C" [vba]
Код
Sub Макрос1() Dim arr_del, arr_data, s, n As Long Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Set sd = CreateObject("Scripting.Dictionary") arr_del = Worksheets("del").ListObjects("tblDel").ListColumns("Код").DataBodyRange arr_data = Worksheets("1C").ListObjects("tblData1C").ListColumns("Код").DataBodyRange For Each s In arr_del If Not sd.Exists(s) Then sd.Add s, s Next For n = UBound(arr_data) To 1 Step -1 If sd.Exists(arr_data(n, 1)) Then Worksheets("1C").ListObjects("tblData1C").ListRows(n).Delete Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True End Sub
[/vba]
Вот макрос, если есть Код в таблице tblDel то удаляет строки с таким же кодом из строки из таблицы "tblData1C" [vba]
Код
Sub Макрос1() Dim arr_del, arr_data, s, n As Long Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Set sd = CreateObject("Scripting.Dictionary") arr_del = Worksheets("del").ListObjects("tblDel").ListColumns("Код").DataBodyRange arr_data = Worksheets("1C").ListObjects("tblData1C").ListColumns("Код").DataBodyRange For Each s In arr_del If Not sd.Exists(s) Then sd.Add s, s Next For n = UBound(arr_data) To 1 Step -1 If sd.Exists(arr_data(n, 1)) Then Worksheets("1C").ListObjects("tblData1C").ListRows(n).Delete Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True End Sub