enter image description here

Мне нужно добавить в свой скрипт функциональность, чтобы возвращать запасы с «Наибольшим процентным увеличением», «Наибольшим процентным уменьшением» и «Наибольшим общим объемом».

Я надеялся, что мой код будет сохранять наибольшее значение процента_изменения каждый раз, когда g превышает его, но в выводе сохраняется только самый последний тикер (в строке 400) и 0.

greatest_increase = -1
For e = 2 To 400

If Cells(e, 11).Value > Cells(e + 1, 11).Value Then
n = Cells(e, 9).Value
g = Cells(e, 11).Value

If g > greatest_increase Then
greatest_ticker = n
greatest_increase = g

Cells(2, 15).Value = greatest_increase
Cells(2, 16).Value = greatest_ticker

End If
End If
Next e

End Sub


-1
imtiredofdata 16 Сен 2023 в 20:27
Удалите блок If Cells(e, 11).Value > Cells(e + 1, 11).Value Then. И переместите Cells(2, 15).Value = greatest_increase : Cells(2, 16).Value = greatest_ticker после Next e.
 – 
CDP1802
16 Сен 2023 в 20:35

1 ответ

Вы можете использовать WorksheetFunction.Max (версия VBA), чтобы сэкономить время на циклическом переборе строк:

' Get max value in column K (from row 2 up to row 400)
greatest_ticker = WorksheetFunction.Max(Range(Cells(2, "K"), Cells(400, "K")))
0
Shai Rado 16 Сен 2023 в 21:25