Ну, вот что вы не просили ... VBA
Но, возможно, это поможет вам понять, как подойти к проблеме
Sub deleter()
Dim col
Dim header
Dim exclusions As Object
Set exclusions = CreateObject("Scripting.Dictionary")
' add column names you want to save
exclusions.Add "Date", 1
exclusions.Add "Id", 1
' iterate thru columns
With ThisWorkbook.Worksheets("Sheet1").UsedRange
For col = .Columns.Count To 1 Step -1
' save column name (row 1)
header = Trim(CStr(.Cells(1, col).Value))
' if not in dictionary, delete column
If Not exclusions.exists(header) Then
.Columns(col).Delete
End If
Next
End With
End Sub
Этот подход предполагает, что имена столбцов находятся в строке 1 для каждого столбца