【发布时间】:2015-09-01 05:47:59
【问题描述】:
我有一个电子表格,其中销售数据与 N:AD 列中的其他数据穿插在一起。 sales 的列标题始终以 Sales 一词结尾(例如,“2015-06-Sales”。我希望仅当标题以“Sales”一词结尾时才对每一行的数据求和。我需要这样做vba,因为列名会随着时间而变化。
示例数据(我希望 F 列对以 sales 结尾的列进行求和 - 或者在下面的例子中为 N 和 P):
Column F Column N Column O Column P
Total Sales 2015-05-Sales 2015-05-Qty 2015-01-Sales
Item1 20 5 30 15
Item2 15 5 1 10
Item3 10 1 2 9
这是我目前的代码:
Sub test()
Dim lcolumn As Long
Dim lrow As Long
Dim SSold
For lrow = 2 To 100 Step 1
For lcolumn = 14 To 30 Step 1
If Right(ws.Range(1 & lcolumn), 5).Value = "Sales" Then
SSold = 0
SSold = SSold + Range(lrow & lcolumn)
End If
Next lcolumn
Range(lrow & 6).Value = SSold
Next lrow
End Sub
它创建运行时错误“1004”:对象“_Global”的方法“范围”在“如果正确(范围...
感谢您的帮助!
【问题讨论】:
-
在几个地方将
Range(lrow & lcolumn)替换为Cells(lrow, lcolumn)。 Range.Cells property 接受行和列的数字参数。 Range object 需要 xlA1 样式的单元格引用。 -
我也想知道你为什么每次找到匹配项时都要重置
SSold = 0。看来 ti 永远不会收集总数;只有最后一个匹配的值。 -
@Jeeped 不是每列总计的OP重置值吗?
-
@mrbungle - 也许我没有正确阅读,但在我看来
SSold在添加任何新值之前立即重置为零。 -
SSold每次都会保留该值,并继续添加到自身而不是重置为 0 以总计每一列。从一开始就设置为零也是我这样做的方式。我已经体验过 excel 保留上一次运行代码的值。