Вы можете использовать EVALUATE и AGGREGATE , чтобы проверить, совпадают ли суммы в двух столбцах:
Option Explicit
Public Sub test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")
With ws 'Your sheet name goes here
If .Evaluate("AGGREGATE(9,3,J:J)") = .Evaluate("AGGREGATE(9,3,L:L)") Then
Union(.Columns("J"), .Columns("L")).Delete Shift:=xlToLeft
End If
End With
End Sub
Первый аргумент, переданный AGGREGATE, равен Function_num
.9
- это SUM
.Второй аргумент Options
.3
- это Ignore hidden rows, error values, nested SUBTOTAL and AGGREGATE functions
.Преимущество использования AGGREGATE заключается в том, что вы можете указывать различные параметры для условий суммирования, например игнорировать ошибки, а также скрытые строки.
Редактировать:
При использовании в цикле над рабочими таблицами используйтепеременная листа из цикла в операторе With, чтобы гарантировать, что в ваших диапазонах указан родительский лист.Это сделает ваш код менее подверженным ошибкам.
Public Sub test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
With ws
If .Evaluate("AGGREGATE(9,3,J:J)") = .Evaluate("AGGREGATE(9,3,L:L)") Then
Union(.Columns("J"), .Columns("L")).Delete Shift:=xlToLeft
End If
End With
Next
End Sub