2017-01-04 90 views
0

我需要一些帮助。 使用Excel 2007. 我甚至不确定这可以做到。 我需要保持效率和速度,否则应用程序将不会被使用。VBA将公式分配给变量,然后使用变量来评估公式

我有一个'IF'语句来测试一个标准。 取决于结果想要将几个可能的公式之一分配给变量供以后使用。 然后,我需要让变量来评估公式,以便可以将结果存储在第二个变量中以构建数组。

示例代码:

If (varEmployeeName = "(All)" Or varEmployeeName = "(Multiple Items)") Then 
    **varArrayFormula = "Application.WorksheetFunction.SumIfs(wsSumRange, wsLookupRange, wsLookupValue)"** 
Else 
    **varArrayFormula = "Application.WorksheetFunction.SumIfs(wsSumRange, wsLookupRange, wsLookupValue, wsLookupRange2, varEmployeeName)"** 

后来这个代码将执行:

ReDim varKPIArray(0 To varLastRow) ' creates the array size 

For varCol = 10 To 13 
    For varRow = 8 To varLastRow 
     varDailyKPIHeading = ws.Cells(7, varCol).Value 
     Select Case varDailyKPIHeading 
      Case "PRODUCTIVITY" 
       Set wsSumRange = ThisWorkbook.Worksheets("DailyProductivity").Range("$G:$G") 
       Set wsLookupRange = ThisWorkbook.Worksheets("DailyProductivity").Range("$F:$F") 
       wsLookupValue = ws.Range("B" & varRow).Value 
       **varSumifValue = Application.Evaluate(varArrayFormula)** 
       varKPIArray(varRow - 8) = varSumifValue 

      Case "HOURS" 

会再经过几列和行中循环,因此为什么需要程序中的变量。我现在有两个选项: 1)是建立一个数组,然后我可以将数组结果粘贴到第二个循环的适当单元格中。 或 2)当我通过每个细胞是循环我填充公式结果到小区

谢谢大家对您有所帮助,建议和想法

+0

我试过使用“”但这适用公式作为字符串我已经尝试使用[]但这然后想要执行该公式并将结果应用于变量 – rchrysler

回答

1

使用此为您的公式字符串:

"SumIfs(" & wsSumRange.Address(0,0) & "," & wsLookupRange.Address(0,0) & "," & wsLookupValue & ")" 

和:

"SumIfs(" & wsSumRange.Address(0,0) & "," & wsLookupRange.Address(0,0) & "," & wsLookupValue & "," & wsLookupRange2.Address(0,0) & "," & varEmployeeName & ")" 
+0

谢谢你的帮助。我想你可能误解了。我希望找到一种方法将公式本身(如果甚至可能的话)分配给变量供以后使用,而不是公式的结果。 – rchrysler

+0

wsSumRange&wsLookupRange&wsLookupRange2已被设置为范围,wsLookupValue&varEmployeeName是字符串值作为sumifs条件。 – rchrysler

0

感谢所有谁给他们的建议和帮助。 最终我无法得到任何东西,最终设计和重写代码。 希望有一个简单的解决方案,即将一个包含变量的公式应用于一个变量,以便人们不必重新输入公式,只需引用包含该公式的变量即可。 我将尽快发布我的解决方案,一旦我的代码完成并调试完毕。