Суммируйте значения до достижения определенного значения, а затем начинайте со следующего столбца. - PullRequest
1 голос
/ 23 мая 2019

Я должен суммировать некоторые значения, пока он не достигнет полного числа (1,0 или 2,0 или 3,0) в Excel VBA.

У меня есть контракты и следующий набор данных, поскольку я могу просто считать только «полный контракт» как один, я должен суммировать его, пока он не достигнет этого порогового значения.Когда он превысит этот порог, скажем, у меня 0,5 контракта и я получу 0,6 в следующем месяце, я генерирую полный контракт и сохраняю 0,1 ((0,5 + 0,6) -1) в качестве следующей базы для начала суммы в следующем месяце.,Но если я достигну более 2, мне нужно будет получить 2 контракта в последнем столбце.

Я понимаю, что моя проблема

Я подумал о чем-то вроде цикла For, который суммирует значения встолбцы, и если сумма>> 1, то она записывает «1» в следующий столбец и вычитает 1 из суммы и продолжает, если сумма>> 2, тогда она записывает «2» в следующий столбец и вычитает 2 из суммыи так далее ...

Dates   Est. Contracts  Sum of Contracts    Actual Contracts
01.06.2019  0,2               0,2   
01.07.2019  0,3               0,5   
01.08.2019  0,5               1,0                 1
01.09.2019  0,5               0,5   
01.10.2019  0,6               1,1                 1
01.11.2019  0,7               0,8   
01.12.2019  0,9               1,7                 1
01.01.2020  1,2               1,9                 1
01.02.2020  1,5               2,3                 2
01.03.2020  1,7               2,1                 2
01.04.2020  2,0               2,0                 2
01.05.2020  2,2               2,2                 2

1 Ответ

1 голос
/ 23 мая 2019

ты имеешь в виду что-то подобное?:

╔═══════╦═══════════════╦═══════════╦══════════════╗
║ dates ║ est contracts ║ sum contr ║ actual contr ║
╠═══════╬═══════════════╬═══════════╬══════════════╣
║       ║ 0.1           ║ 0.1       ║              ║
║       ║ 0.2           ║ 0.3       ║              ║
║       ║ 0.3           ║ 0.6       ║              ║
║       ║ 0.4           ║ 1         ║            1 ║
║       ║ 0.2           ║ 0.2       ║              ║
║       ║ 0.4           ║ 0.6       ║              ║
║       ║ 0.4           ║ 1         ║            1 ║
║       ║ 0.8           ║ 0.8       ║              ║
║       ║ 1.4           ║ 2.2       ║            2 ║
║       ║ 0.9           ║ 1.1       ║            1 ║
║       ║ 2.2           ║ 2.3       ║            2 ║
╚═══════╩═══════════════╩═══════════╩══════════════╝


Option Explicit

Sub WholeContracts()
Dim rng As Range
Dim lastrow As Long
Dim el As Range
Dim sumContr As Double
lastrow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
Set rng = Range("B2", "B" & lastrow)
rng.Select

sumContr = 0

For Each el In rng
    el.Select
    sumContr = el.Value + sumContr
    el.Offset(0, 1).Value = sumContr

    If Int(sumContr) = 1 Then
        el.Offset(0, 2) = 1
        sumContr = sumContr - 1
    ElseIf Int(sumContr) = 2 Then
        el.Offset(0, 2) = 2
        sumContr = sumContr - 2
    ElseIf Int(sumContr) = 3 Then
        el.Offset(0, 2) = 3
        sumContr = sumContr - 3
    End If
Next el

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