Как сохранить условные данные в диапазоне в массиве и записать их в новый столбец на листе - PullRequest
0 голосов
/ 30 марта 2019

Я настраиваю систему бухгалтерского учета с использованием excel-vba для автоматической отправки различных значений в журнале на конкретные счета, такие как бухгалтерская книга, бухгалтерский баланс, отчет о прибылях и убытках и т. Д. На основе категории или описания.

Это моя первая попытка автоматизировать эти учетные записи.

'' '' ''

Sub ListSpecificVals()

    Dim Arr() As Variant
    Dim datarange, cell As Range
    Dim count As Long

    Set datarange = Sheet5.Range("a17:f28")
    ReDim Arr(1 To 12, 1 To 6)

    count = Application.WorksheetFunction.CountIf(datarange, "abc")
    MsgBox count

    For i = 1 To count
        For Each cell In datarange
            If cell.Value = "abc" Then
                cell.Offset(0, 1).Value = 33
                For i = 1 To count
                    Arr(i, 1) = cell.Address
                Next i
                Debug.Print cell.Address + " = "
                Debug.Print cell.Offset(0, 1).Value
            End If
        Next cell
    For i = 1 To count
        Sheet5.Cells(i + 16, 10).Value = Arr
    Next i

End Sub

'' ''

При записи значений массива на лист, я ожидаю, что каждая ячейка в диапазоне результатов будет давать разные адреса для ячеек, содержащих «abc» в «datarange». Вместо этого в каждой ячейке диапазона результатов на рабочем листе записывается только последний cell.address в «datarange». Опять же, когда я использую Debug.Print cell.Address + "=", Debug.Print cell.Offset (0, 1). Значение, как показано в коде, непосредственные окна показывают результаты точно и точно так, как они должны появиться, но когда я использую Debug.Print Arr (i, 1) непосредственное окно не показывает никаких результатов.

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