我正在尝试将股票交易从交易工作簿转移到另一本具有我想要的格式的书。我希望能够在代码顶部更改客户端名称和库存,以便更容易为多人运行。问题是,当我运行它时,它只返回格式化工作表中的一个日期,当我可以看到交易手册中有不同日期的给定股票代码有3个股票交易。似乎FOR函数没有循环遍历事务簿中的所有行,但我不知道为什么
Sub SortTransactionData()
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks("Allen Smith Transactions.xlsx")
Set ws = wb.Sheets("Sheet1")
Dim wb1 As Workbook
Dim ws1 As Worksheet
Set wb1 = Workbooks("Allen Smith HI.xlsm")
Set ws1 = wb1.Sheets("MO")
Dim ticker As String
ticker = ws1.Range("A2")
Dim a As Integer
a = ws.Cells(Rows.Count, 6).End(xlUp).Row
Dim b As Integer
b = Application.WorksheetFunction.CountIf(ws1.Range("B1:B7"), "*")
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)
End If
Next
End Sub
正如评论中所提到的,问题是单元格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