как использовать значение ячейки как переменную, которая была ранее сохранена - PullRequest
0 голосов
/ 24 декабря 2018

Вот моя проблема:

У меня есть ячейка, скажем, I1, со значением свойства равным Monday.

Ранее я сохранил Monday= каксумма диапазона.

Мне нужно сослаться на ячейку I1 и получить сумму, чтобы сравнить результат с оператором if.

Мне нужен макрос для заполнения определенного числа«1 с» в зависимости от ограничения для каждого дня недели, если Cells(2, i).Offset(-1, 0).Value < 2 Then

Sub dayweek()

    Dim i As Byte, Monday As Byte, Tuesday As Byte, Wednesday As Byte, Thursday As Byte, Friday As Byte
    i = 9

    Monday = Application.WorksheetFunction.Sum(Range(Cells(2, i), Cells(2, i + 4)))

    Tuesday = Application.WorksheetFunction.Sum(Range(Cells(2, i - 1), Cells(2, i + 3)))

    Wednesday = Application.WorksheetFunction.Sum(Range(Cells(2, i - 2), Cells(2, i + 2)))

    Thursday = Application.WorksheetFunction.Sum(Range(Cells(2, i - 3), Cells(2, i + 1)))

    Friday = Application.WorksheetFunction.Sum(Range(Cells(2, i - 4), Cells(2, i)))

    Do While i < 14
        If Cells(2, i).Offset(-1, 0).Value < 2 Then 'In this cell i have the value "monday","tuesday", etc...

            Cells(2, i).Value = 1
            i = i + 1
        Else
            Cells(2, i).Value = 0
            i = i + 1
        End If
    Loop

End Sub

Ответы [ 2 ]

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

После моего комментария я бы посоветовал вам просто использовать массив для хранения результатов сумм, а затем записать их в нужные ячейки:

Sub dayweek()
    Dim startColumn As Long, nColumns As Long, jCol As Long

    startColumn = 9
    nColumns = 5

    ReDim results(0 To nColumns - 1) As Long ' array storing the results

    For jCol = 0 To nColumns - 1
        results(jCol) = IIf(Application.WorksheetFunction.Sum(Cells(2, startColumn - jCol).Resize(, nColumns)) < 2, 1, 0)
    Next
    Cells(2, startColumn).Resize(, nColumns).Value = results
End Sub
0 голосов
/ 24 декабря 2018

По моему мнению, вариант заключается в том, чтобы назвать диапазон для каждого дня и впоследствии получить его сумму.

Option Explicit

Sub dayweek()

    Dim i As Long
    Dim Monday As Range, Tuesday As Range, Wednesday As Range, Thursday As Range, Friday As Range
    Dim Result As Double

    With ThisWorkbook.Worksheets("Sheet1")

        Set Monday = .Range(Cells(2, i), Cells(2, i + 4))

        Set Tuesday = .Range(Cells(2, i - 1), Cells(2, i + 3))

        Set Wednesday = .Range(Cells(2, i - 2), Cells(2, i + 2))

        Set Thursday = .Range(Cells(2, i - 3), Cells(2, i + 1))

        Set Friday = .Range(Cells(2, i - 4), Cells(2, i))

        Result = Application.WorksheetFunction.Sum(Monday)

    End With

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