Мне нужно добавить в свой скрипт функциональность, чтобы возвращать запасы с «Наибольшим процентным увеличением», «Наибольшим процентным уменьшением» и «Наибольшим общим объемом».
Я надеялся, что мой код будет сохранять наибольшее значение процента_изменения каждый раз, когда 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 ответ
Вы можете использовать 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")))
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию объектов или файлов Excel или по разработке формул. Вы можете комбинировать тег Excel с тегами и вопросами VBA, VSTO, C#, VB.NET, PowerShell, OLE и другими тегами и вопросами, связанными с программированием, если это применимо. НЕ используйте с другим программным обеспечением для работы с электронными таблицами, например [google-sheets].
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
.