Накопление вхождения "true" или "1" приводит к отдельному столбцу
У меня есть около 100 строк, которые включают в себя генератор случайных чисел в столбце и в другом столбце с вычислениями =A на основе этого случайного числа и других вещей. Я установил столбец с оператором if, чтобы проверить, находится ли A в верхнем и нижнем диапазонах, который возвращает "1", если истина (попадание, если хотите), и "0", если нет. Я хочу запустить цикл и посчитать количество попаданий с течением времени в этих ячейках. По сути, мне нужен столбец, который накапливает результаты, чтобы в итоге я увидел, какой диапазон имеет наибольшее количество попаданий и т. Д.
1 ответ
Чтобы упростить его, давайте сначала скажем, что перед тем, как мы начнем, ваши данные хранятся на вашем рабочем листе "ws":
A | B | C
1 Random Numbers | Calculated Value | Accumulated Value
2 0 | 1 |
3 5 | 0 |
4 8 | 1 |
5 73 | 0 |
6 2 | 0 |
[...]
И скажем, мы хотим запустить этот процесс 10 000 раз, чтобы увидеть, какие строки получают наибольшие накопленные значения, представленные в виде суммы вычисленного значения для каждой из предыдущих итераций. Я бы предложил следующее решение VBA:
Sub AccumulateValues
Dim MaxIterations As Long: MaxIterations = 10000
Dim curRow as Long, LastRow as Long, it as Long
Application.Calculation = xlCalculationManual 'Required to set it to manual
With ws
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
For it = 1 to MaxIterations
'Force the Recalculation of Cells in columns A and B:
Application.Calculate
For curRow = 2 To LastRow
'Sum the result of this iteration with the accumulated value
'until the previous iteration and stores it.
ws.Cells(curRow, 3) = ws.Cells(curRow, 3) + ws.Cells(curRow, 2)
Next curRow
Next it
End With
End Sub