我有两本工作簿:“TEST”和“Report”。我使用了以下代码:
MsgBox Sum_Visible_Cells(Worksheets("Raw Data").Range("M2:M" & LastRow(Worksheets("Raw Data"))))
并返回消息框中的sum值。我还能够在工作簿“TEST”中的工作表“原始数据”的单元格中返回总和。
如何让excel返回工作表“Sheet1”中的值,工作簿“Report”上的范围“L9”?
答案 0 :(得分:0)
您不需要vba来执行此操作。在单元格Sheet1!L9
中输入公式
=SUBTOTAL(109,'Raw Data'!$M:$M)
在VBA中使用
Application.Workbooks("Report.xlsm").Worksheets("Sheet1").Range("L9") = "Result of your function"
注意:您必须包含文件扩展名,并且必须打开工作簿。
编辑:
Sum_Visible_Cells
不是工作表函数。
试试这个(假设代码在工作簿中Test
)
Application.Workbooks("Report.xlsm").Worksheets("Sheet1").Range("L9") = _
Application.WorksheetFunction.Subtotal(109, ThisWorkbook.Worksheets("Raw Data").Columns(13))
从您的评论Range("M2:M)
我想您想要从总数中排除第1行
只要M1
不是数字求和,整列就没问题了。如果第1行是数字,并且您想要将其排除,请尝试
Dim rng as Range
With ThisWorkbook.Worksheets("Raw Data")
Set rng = .Range(.Cells(2,13), .Cells(.Rows.Count, 13).End(xlUp))
End With
Application.Workbooks("Report.xlsm").Worksheets("Sheet1").Range("L9") = _
Application.WorksheetFunction.Subtotal(109, rng)
答案 1 :(得分:0)
是否必须按照您描述的顺序完成?
如果您使用附加链接"VBA to get value from closed file"中的建议添加GetValue函数(公开)来检索您将拥有的测试工作簿中的信息:
在TEST工作簿中:
在REPORT工作簿中使用Sheet1 Cell L9中的GetValue()函数:
=GetValue(p, f, s, a)
其中