Сохраняйте несколько столбцов и сохраняйте остальные на основе введенных данных

Привет, у меня есть лист Excel с 5 аналогичными столбцами для каждого месяца (январь, февраль и т. д.).

введите здесь описание изображения

У меня есть код VBA, который автоматически создаст столбцы на следующий месяц (в данном случае это будет март). После ввода данных за март я хочу, чтобы мой файл был сохранен как March.xls, удалив данные за оставшуюся часть месяца (при сохранении данных за все месяцы в исходном файле). есть ли способ сделать это с помощью VBA? Я был бы признателен за ваши ответы относительно того же. Я хочу, чтобы мой файл каждого месяца "сохранялся как" ниже: введите здесь описание изображения

Я нашел приведенный ниже код в Интернете, и он выполняет свою работу. Единственная проблема заключается в том, что мне нужно ввести имя столбца, который я хочу удалить в этом коде, например: «Апрель» в коде. Можно ли заставить этот код работать таким образом, чтобы автоматически сохранять последние четыре столбца и первый (столбец идентификатора) и удалять остальные. Спасибо

Sub DeleteData()
    Dim ws As Worksheet
    Dim ColList As String, ColArray() As String
    Dim LastCol As Long, i As Long, k As Long, l As Long, m As Long, j As Long
    Dim boolFound As Boolean
    Dim delCols As Range, delCols1 As Range, delCols2 As Range, delCols3 As Range
    Application.ScreenUpdating = False
    Set ws = Sheets("Sheet1")
    ColList = "April"
    ColArray = Split(ColList, ",")
    LastCol = ws.Cells.Find(What:="*", After:=ws.Range("A1"), Lookat:=xlPart, _
    LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
    MatchCase:=False).Column
    For i = 8 To LastCol
    boolFound = False
    For j = LBound(ColArray) To UBound(ColArray)
    If UCase(Trim(ws.Cells(1, i).Value)) = UCase(Trim(ColArray(j))) Then
    boolFound = True
    Exit For
    End If
    Next
    If boolFound = False Then
    If delCols Is Nothing Then
    Set delCols = ws.Columns(i)
    Else
    Set delCols = Union(delCols, ws.Columns(i))
    End If
    End If
    Next i
    If Not delCols Is Nothing Then delCols.Delete

person Nupur    schedule 30.04.2012    source источник
comment
Отличается ли это от вопроса, который вы недавно задавали? stackoverflow.com/ вопросы/10079915/   -  person Marc    schedule 30.04.2012
comment
Не совсем, но я думаю, что удалил свой предыдущий вопрос. У него не было кода, как у меня в этом вопросе.   -  person Nupur    schedule 30.04.2012
comment
@ Марк: Кроме того, в предыдущем ответе не было ответов. Итак, я просто больше изучил код.   -  person Nupur    schedule 30.04.2012


Ответы (1)


person    schedule
comment
@ Давид, спасибо за ответ. Код сохраняет только последний столбец для выбранного месяца. На рисунке выше, например: он сохранит только Col4 для марта и удалит остальные. - person Nupur; 01.05.2012
comment
Я только что отредактировал код, помните, что основной файл должен быть первым файлом Excel, который вы открыли. и не забудьте получить файл резервной копии, потому что, когда vba удаляет столбцы, вы не можете отменить изменения. надеюсь, эта работа - person David Peterson; 05.05.2012