我有一个电子表格,我试图添加所有某个自动收报机的音量,然后将自动收报机名称和总和粘贴到数据范围的右侧 . 这是我的三明治表的样子
<ticker<date> <open> <high> <low> <close> <vol>
A 20160101 41.81 42.36365509 41.81 4854841.81 0000001
A 20160104 41.06 1.305047274 40.34 3287340.69 0000002
A 20160105 40.73 0.902213812 40.34 2587240.55 0000003
A 20160106 40.24 0.71801573 40.05 2103640.73 0000004
B 20160107 40.14 3.227402925 38.81 3504339.34 3504305
B 20160108 39.22 0.716412187 38.47 3736738.59 3736705
B 20160111 38.71 0.206870243 37.41 2818637.94 2818605
这是我试图结束的地方,使用某个股票代码的交易量和它的股票 Value 的总和打印到数据范围右侧的单元格 .
<ticker<date> <open> <high> <low> <close> <vol> <ticker> <vol>
A 20160101 41.81 42.36365509 41.81 4854841.81 0000001 A 10
A 20160104 41.06 1.305047274 40.34 3287340.69 0000002 B 15
A 20160105 40.73 0.902213812 40.34 2587240.55 0000003 C 4
A 20160106 40.24 0.71801573 40.05 2103640.73 0000004
B 20160107 40.14 3.227402925 38.81 3504339.34 0000005
B 20160108 39.22 0.716412187 38.47 3736738.59 0000005
B 20160111 38.71 0.206870243 37.41 2818637.94 0000005
C 20160111 38.71 0.206870243 37.41 2818637.94 0000002
C 20160111 38.71 0.206870243 37.41 2818637.94 0000002
截至目前,我的宏打破了“不比较,而是复制和粘贴”标志 . 在IF语句不进行比较的情况下,如果它没有使excel程序崩溃,则复制它 .
Sub totalVolume()
Dim tickSum As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("I1"), unique:=True
tickerRecordLength = Cells(Rows.Count, 1).End(xlUp).Row
tickerLength = Cells(Rows.Count, 9).End(xlUp).Row
For tl = 1 To tickerLength
tickSum = 1
tickerValue = Cells(tl, 9).Value
'MsgBox (tickerValue)
For tlr = 1 To tickerRecordLength
********************** Does not compare, instead copies & paste **********************
If Cells(tlr, 1).Value = tickerValue Then
***************************************************************************************
MsgBox ("tickerRecord: " + Str(tickerRecord))
MsgBox ("tickerValue: " + Str(tickerValue))
'Cells(tlr, 6).Value = Cells(tlr, 6).Value + Cells(tlr, 7).Value
End If
Next tlr
Cells(tl, 10).Value = tickSum
Next tl
End Sub
2 回答
SUMIF是您所需要的,无论是在代码中,还是如果您希望在工作表上显示总和,您可以在单元格中植入公式供所有人查看 - 这个2-liner完全绕过任何循环,第2行只需将公式填入第一行创建的行:
虽然为了良好的实践,我也建议使用Option Explicit并按名称定义您的工作表等 .
你可以使用application.SumIf并取消你的第二个循环(为我和你的数据样本工作):