Как реализовать формулу в конце вашего цикла в VBA? - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь по сути иметь цикл, который подсчитывает определенные критерии для меня.В конце моего кода я хочу сделать так, чтобы все, что не учитывалось, по сути называлось «DRSNR».Я знаю, что мог бы использовать простую формулу в своем файле, чтобы она работала, но я предпочел бы иметь формулу в своем коде VBA, чтобы она стала фиктивной, и никто не стер ее по ошибке, поскольку я не буду единственным пользователем.

Теперь по какой-то причине мой код не работает в этом месте:

drsnr = lastrow - sac - count

По какой-то причине я всегда получаю счет 0, несмотря ни на что.Есть идеи?Сначала я подумал, что мой lastrow не был приписан как целое число, поэтому я добавил Dim lastrow as integer, но это тоже не сработало.

Sub DeleteSAC()
    Dim count As Integer
    Dim sac As Integer
    Dim drsnr As Integer
    Dim i As Integer
    Dim j As Integer
    Dim lastrow As Integer

    Sheets(1).Select

    lastrow = ActiveSheet.Cells(Rows.count, "B").End(xlUp).Row

    'have to keep data in a table for this to actually work as it ctrls+left to the table, which will end where the very last text of any row is
    lastColumn = ActiveSheet.Cells(1, Columns.count).End(xlToLeft).Column

    count = Sheet2.Cells(1, 7).Value
    sac = 0
    i = 2
    j = lastColumn

    For i = 2 To lastrow
    For j = lastColumn To 1 Step -1
    If Sheet1.Cells(i, j) = "SAC" Or Sheet1.Cells(i, j) = "Incorrect address" Then
        count = count - 1
        sac = sac + 1
        GoTo NextIteration
    End If
    Next j
    NextIteration:
    Next i

    Sheet2.Cells(1, 7) = count
    Sheet2.Cells(1, 10) = sac
    Sheet2.Cells(1, 13) = drsnr
    drsnr = lastrow - sac - count

    Sheets(2).Select
End Sub

1 Ответ

0 голосов
/ 29 декабря 2018

Возможно, вам понадобится переместить эту строку:

drsnr = lastrow - sac - count

до:

Sheet2.Cells(1, 13) = drsnr

drsnr будет инициализированоInteger со значением 0, пока вы не назначите ему другое значение.

...