【发布时间】:2019-02-01 20:52:00
【问题描述】:
我有一张表,上面有股票代码 (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
【问题讨论】: