2017-01-04 93 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

感謝所有誰給他們的建議和幫助。 最終我無法得到任何東西,最終設計和重寫代碼。 希望有一個簡單的解決方案,即將一個包含變量的公式應用於一個變量,以便人們不必重新輸入公式,只需引用包含該公式的變量即可。 我將盡快發佈我的解決方案,一旦我的代碼完成並調試完畢。