2014-01-28 9 views
0

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

На минуту у меня есть

Sub DeleteClms() 
    Range("A:G,L:O").Delete 
End Sub 

Есть в любом случае, чтобы сделать это наоборот, и на других языках, я бы просто положить = !. Я попытался поставить <> в, но я не знаю, где/как положить его в мой код?

Благодаря

+0

хммм, не уверен, что вы можете использовать <>, Если бы я был в вашей ситуации я бы просто записать макрос и выбрать все столбцы Я хочу удалены. Затем входите и убирайте немного. – SeekingAlpha

+0

Нет - для этого не существует эквивалентного прямого подхода в VBA. Ближайшим будет копирование диапазона, который вы хотите, а не удаления диапазона, который вы не хотите. – brettdj

ответ

0

Там нет функции Excel или VBA для Symetric Difference колонн, которые я знаю.

Вот быстрая функция VBA, чтобы туда добраться. Использование будет DeleteAllBut Range("A:C,H:Q")

Sub DeleteAllBut(rngToKeep As Range) 
    Dim ws As Worksheet 
    Dim rngToDelete As Range 
    Dim rngColi As Range 

    'Number of columns used in worksheet 
    Set ws = rngToKeep.Parent 
    iCols = ws.UsedRange.Columns.Count 

    FirstOne = True 
    For i = 1 To iCols 
     Set rngColi = Range("A:A").Offset(0, i - 1) 
     If Intersect(rngToKeep, rngColi) Is Nothing Then 
      If FirstOne Then 
       Set rngToDelete = rngColi 
       FirstOne = False 
      Else 
       Set rngToDelete = Union(rngColi, rngToDelete) 
      End If 
     End If 
    Next i 

    Debug.Print rngToDelete.Address & " was deleted from " & ws.Name 
    rngToDelete.Delete 


End Sub 
Смежные вопросы