Изменения определенного диапазона с каждой петлей (КАК ОСТАНОВИТЬ) - PullRequest
0 голосов
/ 08 июля 2019

Я установил диапазон, а затем суммировал каждый столбец в этом диапазоне. Когда я затем проверяю каждый суммированный столбец, чтобы проверить его значение (и удаляю, если он равен нулю), диапазон постоянно меняется. Как мне остановить или изменить это?

По сути, я просто хочу суммировать каждый столбец от C до последнего столбца, и если столбец равен нулю, я хочу удалить этот столбец. Мне даже не нужно видеть сумму столбца. Я просто хочу проверить это, и если он равен нулю, удалить этот столбец. Как только я это почистю, я продолжу манипулировать данными Мои данные имеют заголовки. Количество строк в данных является динамическим. Если есть более простой способ, пожалуйста, дайте мне знать. Это то, что я пытался (причина, по которой мой ttlRow выглядит не так, потому что в столбце A я ввел «Итого» в первой пустой строке).

Dim ttlRow As Range
Dim x As Long
Dim y As Long
y = Cells(1, Columns.Count).End(xlToLeft).Column
x = Cells(Rows.Count, 1).End(xlUp).Row
Set ttlRow = Range(Cells(x, 3), Cells(x, y))
Range("C1").End(xlDown).Offset(1, 0).Formula = "=SUM(" & Range(Cells(2, 3), Cells(x - 1, 3)).Address(False, False) & ")"
ttlRow.FillRight

For Each cell In ttlRow
    If cell = 0 Then
        cell.EntireColumn.Delete
    End If
Next

Каждый раз, когда цикл запускается и столбец удаляется, он изменяет длину ttlRow, поэтому он никогда не завершает работу по всем столбцам для проверки. Как мне это исправить?

1 Ответ

1 голос
/ 08 июля 2019

Используйте это:

Dim x As Long
Dim y As Long
Dim i as Integer

    y = Cells(1, Columns.Count).End(xlToLeft).Column
    x = Cells(Rows.Count, 3).End(xlUp).Row

For i = y To 3 Step -1

    If WorksheetFunction.Sum(Range(Cells(2, i), Cells(x, i))) = 0 Then
        Columns(i).EntireColumn.Delete
    End If

Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...