VBA for循环仅在满足条件的条件下返回一个值

时间:2019-03-25 19:59:30

标签: excel vba for-loop if-statement worksheet-function

我正在尝试将股票交易从交易工作簿转移到另一本具有所需格式的书。我希望能够在代码顶部更改客户名称和股票,以便可以轻松地为多人运行。问题是,当我运行它时,它只能在格式化的工作表中返回一个日期,当我可以看到给定的报价单中有3笔股票交易在交易簿中具有不同的日期。似乎FOR函数并未遍历交易簿中的所有行,但我不确定为什么

df1.merge(df2.assign(HIF=df2['HIF'].str.extract(r'(HIF-\w{4})')), on='HIF')

   ID Title       HIF      Date   Type
0   1     A  HIF-1101  01/12/19  Image
1   2    AB  HIF-1102  01/14/19  Image

1 个答案:

答案 0 :(得分:1)

正如评论中提到的那样,问题在于单元格ws1.Cells(b + 1, 2)从未更改,因此您在循环时会不断覆盖旧值

每次循环时,更改代码以递增索引b

For i = 2 To a
    'copy date for stock transaction'
    If ws.Cells(i, 6).Value = ticker Then
        ws1.Cells(b + 1, 2).Value = ws.Cells(i, 1)
        b = b + 1
    End If
Next i