【发布时间】:2014-09-13 00:46:06
【问题描述】:
Dim lastrow As Integer
Dim lastcol As Integer, thiscol As Integer
xlWorkbook = xlApp.Workbooks.Open(Filename:="C:\Users\d3p823\Desktop\test data.xlsx") 'opens workbook'
xlWsheet2 = xlWorkbook.Sheets("Sheet4") 'set active sheet'
xlApp.Visible = True
With xlWsheet2
lastrow = xlWsheet2.Cells(xlWsheet2.Rows.Count, 1).End(Excel.XlDirection.xlUp).Row
lastcol = xlWsheet2.Cells(1, xlWsheet2.Columns.Count).End(Excel.XlDirection.xlToLeft).Column
For thiscol = 2 To lastcol
xlWsheet2.Cells(lastrow + 1, thiscol).Select()
xlApp.ActiveCell.Value = xlApp.WorksheetFunction.Sum(xlWsheet2.Cells(2, xlApp.ActiveCell.Column), xlApp.ActiveCell)
Next
End With
好的,所以我在电子表格中有一个矩形数据块,其中第 1 行和第 1 列作为标签(文本和数字),以及来自单元格 (2,2) 的数据。数据文件的行数和列数是可变的,但所有数据都是连续的:没有空单元格。 @Clif 和我想出了上面的代码来查找最后一行和最后一列数据,然后在每列下方的第一个空单元格中总结每一列。
谢天谢地,我不再遇到错误了,但是添加到第一个空行的总和并不是整个列的总和,只是第一个单元格的总和。这让我认为 FOR-NEXT 循环在第一次迭代之后没有进展,但我不明白为什么会发生这种情况。
【问题讨论】:
-
您将两个单独的单元格传递给您的
Sum,而不是一个范围。其他几点:您创建一个 With 块然后不要使用它,使用 Select/ActiveCell 既没有必要也不可取 -
@chrisneilsen,我尝试在没有
Select和ActiveCell的情况下运行代码,只使用Cells(lastrow + 1, thiscol).Value = WorksheetFunction.Sum(Range(Cells(1, ActiveCell.Column), ActiveCell)),但它不起作用。你能告诉我我做错了什么吗? -
@Clif 为演示添加了答案