我有两个工作簿,我想从中提取数据,然后在总数据上运行excel函数,并将结果存储在第三个工作簿中。另外,我不知道我将使用哪个列名或行号,因此我需要对我的数据范围进行推广。我试图在下面的代码中执行此操作,但我收到错误438,对象不支持此属性。
我还想将计算值存储为值而不是公式,因为在我进行计算之后,我想重新格式化原始的excel文件(定期插入标题行),因此公式将不再起作用。
Sub gathering()
Dim var1 As Double
Dim var2 As Double
Dim var3 As Double
Set wb1 = Workbooks.Open("C:\Users\wb459349\Desktop\test1.xlsx")
Set wb2 = Workbooks.Open("C:\Users\wb459349\Desktop\test2.xlsx")
With wb1
FinalColumn = .Worksheets("Sheet1").Cells(1, .Worksheets("Sheet1").Columns.Count).End(xlToLeft).Column
FinalRow = .Worksheets("Sheet1").Cells(.Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row
For j = 1 To FinalColumn
If .Worksheets("Sheet1").Cells(1, j).Value = "Effec.Date" Then
Effective_Date_Column = j
ElseIf .Worksheets("Sheet1").Cells(1, j).Value = "FolderId" Then
FolderId_column = j
ElseIf .Worksheets("Sheet1").Cells(1, j).Value = "FolderNotional USD" Then
FolderNotionalUSD_column = j
ElseIf .Worksheets("Sheet1").Cells(1, j).Value = "Spread" Then
Spread_column = j
End If
Next j
.range1 = .Worksheets("Sheet1").Cells(2, FolderNotionalUSD_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, FolderNotionalUSD_column).Address
var1 = Application.WorksheetFunction.Sum(.range1)
End With
With wb2
.range2 = .Worksheets("Sheet1").Cells(2, Spread_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, Spread_column).Address
var2 = Application.WorksheetFunction.Sum(.range2)
End With
var3 = var1 * var2
ThisWorkbook.Worksheets("sheet1").Cells(1, 1).Value = var3
End Sub
修改
好的,现在正在运作。这是我改变的:
这是原创
.range1 = .Worksheets("Sheet1").Cells(2, FolderNotionalUSD_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, FolderNotionalUSD_column).Address
var1 = Application.WorksheetFunction.Sum(.range1)
这是当前的工作版本
range1 = .Worksheets("Sheet1").Cells(2, FolderNotionalUSD_column).Address & ":" & .Worksheets("Sheet1").Cells(FinalRow, FolderNotionalUSD_column).Address
var1 = Application.WorksheetFunction.Sum(Range(range1))