将变量声明为等于工作表名称,以引用该工作表中的表

时间:2015-08-15 16:22:57

标签: excel vba loops

任务:在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

1 个答案:

答案 0 :(得分:0)

你编写它的方式,变量用引号括起来,vba会将其视为字符串的一部分,并且不会识别你想要使用变量。尝试将公式更改为以下内容:

ActiveCell.FormulaR1C1 = _
        "=SUMIF(" & varTblName & "[Sector], RC[-2]," & varTblName & "[Market Value])"

希望有所帮助!