任务:在100多个工作表中更改sumif的范围。 每张表都有统一的命名约定,即“Client_” 每个工作表中的每个表都与工作表具有相同的名称。因此,在“Client_Leaf”上,有一个名为“Client_Leaf”的表。我一直在ActiveCell.FormulaR1C1线上出错。这是我到目前为止的代码:
Sub fixFormulaRanges()
Application.ScreenUpdating = False
Dim Client As Worksheet
Dim ClientTable As ListObject
Dim varTableName As Variant
For Each Client In ActiveWorkbook.Worksheets
With Client
If CBool(InStr(1, .Name, "Client_", vbTextCompare)) Then
varTblName = .Name
Range("f8").Select
ActiveCell.FormulaR1C1 = _
"=SUMIF(varTblName & [Sector],RC[-2],varTblName & [Market Value])"
Range("F8:F20").Select
Selection.FillDown
End If
End With
Next Client
End Sub
答案 0 :(得分:0)
你编写它的方式,变量用引号括起来,vba会将其视为字符串的一部分,并且不会识别你想要使用变量。尝试将公式更改为以下内容:
ActiveCell.FormulaR1C1 = _
"=SUMIF(" & varTblName & "[Sector], RC[-2]," & varTblName & "[Market Value])"
希望有所帮助!