【发布时间】:2017-05-31 03:07:56
【问题描述】:
我正在尝试向单元格添加一个 SUMIFS 公式,因此我需要有一个变量来引用另一个工作簿中的另一个工作表。但是,这在我的代码中不起作用。仅供参考,我已经用msoFileDialogFilePicker 打开了工作簿。
这是我必须添加公式的部分,ws 是工作表的对象:
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Title = "..."
.AllowMultiSelect = False
If .Show = True Then
If .SelectedItems(1) <> vbNullString Then
Filename = .SelectedItems(1)
End If
Else
Exit Sub
End If
Set wb = GetObject(Filename)
Set ws = wb.Sheets("ASEAN (EUR)")
With ws
YTDws.Range("$A$1:$D$" & usedRow).AutoFilter Field:=1, Criteria1:="Singapore"
If .Range("Q20").Value = "SINGAPORE" Then
usedRow2 = YTDws.Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("C2:C" & usedRow2)
For Each cl In rng.SpecialCells(xlCellTypeVisible)
cl.Select
cl.FormulaR1C1 = "=SUMIFS('&ws.name&'!R[32]C[3]:R[243]C[3],'&ws.name&'!C[2], C[-1])"
Next cl
End If
End With
End With
我认为问题出在这行代码上:
cl.FormulaR1C1 = "=SUMIFS('&ws.name&'!R[32]C[3]:R[243]C[3],'&ws.name&'!C[2], C[-1])"
我在网上搜索了很多做的例子,这个是我从
this post 得到的,我发现它和我的情况相似。但是,它似乎仍然无法正常工作,程序提示我从工作簿中选择工作表并说它找不到工作表ws.name。选择工作表后,单元格中的公式如下所示:=SUMIFS('[&ws.name&]ASEAN (EUR)'!R[32]C[3]:R[243]C[3],'[&ws.name&]ASEAN (EUR)'!C[2], C[-1])。
请帮我定位问题,先谢谢了!
【问题讨论】:
-
刚刚用这个
cl.Formula = "=SUMIFS('" & ws.Name & "'! R[32]C[3] : R[243]C[3],'" & ws.Name & "'!R[33]C[2], C[-1]"解决了它。关键是要有空格和引号。
标签: vba excel excel-formula sumifs