У меня есть таблица с символами тикера (A), рабочими днями в течение года (B), значением открытия (C), высоким значением (D), низким значением (E), значением закрытия (F) иобъем (E).Данные в хронологическом порядке по рабочим дням и в алфавитном порядке по символу тикера (да, они связаны с предыдущим заданным мной вопросом).
Я пытаюсь запустить подпрограмму, которая будет искать номер первой строки в виде символа тикера.появляется (начальное значение за год).Используя соответствующий номер строки и столбца, вытащите значение открытия.Затем используйте это значение, чтобы создать процент на основе годовой дельты, которую я создал в отдельном столбце.
Приведенный ниже код работает нормально до тех пор, пока не появится часть таблицы, в которой начальное значение равно 0.Связанный символ тикера не имеет ненулевой цены, пока не появится в таблице позже (например, IPO для символа тикера происходит в середине года ...).Я надеялся, что будет простое выражение IF, которое бы учитывало это и получало первое ненулевое значение для символа тикера, который ищется.
Из других онлайн-вопросов я нашел решения, в которых вы индексируете или сопоставляете значения в столбце, отличном от нуля.Но способ, которым я нахожу, если есть 0, ссылается на номер первой строки, где появляется тикер ... Я не нашел способа включить какие-либо другие решения в мой код.
Sub Percent()
'Column Header
Cells(1, 11).Value = "Percent Change"
'Set dims
Dim Summary_Table_Row3 As Integer
Summary_Table_Row3 = 2
LastRow3 = Cells(Rows.Count, 10).End(xlUp).Row
'Find start row with unique Ticker
Dim TickStartRow As Double
'Loop through all unique tickers
For I = 2 To LastRow3
'Find start row
TickStartRow = Range("A:A").Find(what:=Cells(I, 9), after:=Range("A1"),
LookAt:=xlWhole).Row
'If the yearly change is 0, set percentage to 0
If Cells(I, 10) = 0 Then
Cells(I, 11) = 0
'''ElseIf statement to find first non-zero value if opening value = 0 ?
'Create percentage for all other non-zero percentages
Else
Cells(I, 11) = Cells(I, 10) / Cells(TickStartRow, 3)
End If
Cells(I, 11).NumberFormat = "0.00%"
'Add one to the summary table row
Summary_Table_Row1 = Summary_Table_Row1 + 1
Next I
End Sub