所以基本上我想编写自动(在其他文档中)基于其他单元格值计算范围值然后将其导出到模板excel文件的宏。
我有这段代码可以获取应该从中提取数据的文件的路径:
Sub GetFilePath()
Dim objFSO As New FileSystemObject
Dim BBuy, SSell As String
Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
Fileselected = .SelectedItems(1)
End With
然后Fileselected的值=&#34; C:\ Users \ ABC \ Desktop \ report sample.xlsx&#34;
如何在= SUMIF公式中引用此Excel文件?
我尝试了类似下面的内容,但没有真正起作用,Google也没有真正的帮助:
BBuy = "Buy"
Fileselected.Formula = "=sumif(A2:A2500, BBuy, N2:N2500)"
任何建议都将不胜感激!
答案 0 :(得分:0)
Heyho,
如果你想引用另一张纸的范围或单元格,你必须尝试如下:
'path[filename.xls]Sheetname'!$A$2:$A$2500
您是否尝试过使用它?
答案 1 :(得分:0)
为了使公式更容易阅读,我宣布了SumIf标准和变量X,它是存储SumIf输出的地方。
Dim MyRange1 as Range
MyRange1 = myFile.Sheets("Your Sheet Name Here").Range("A2:A2500")
Dim MyRange2 as Range
MyRange2 = myFile.Sheets("Your Sheet Name Here").Range("N2:N2500")
Dim BBuy as String
BBuy = "Buy"
Dim X as Variant
X = Application.WorksheetFunction.SumIf((MyRange1, BBuy, MyRange2)
您不必将这些声明为变量,因为您可以在公式中引用它们并将上面的代码减少到一行(2行包括&#34; Dim X作为Variant&#34;)。例如,要替换公式中的范围和标准:
X = Application.WorksheetFunction.SumIf(myFile.sheets("Your Sheet Name Here").Range("A2:A2500), "Buy", myFile.Sheets("Your Sheet Name Here").Range("N2:N2500))
现在您有想要存储在变量&#34; X&#34;中的答案。如果您只想在某处粘贴值,则可以将当前工作簿上的范围设置为等于X.