2016-12-09 2 views
0

mit Excel VBA Ich erhalte Meldungen Syntaxfehler, wenn ich versuche Option 1 und Option 2.So verwenden Excel-Bereiche in Excel VBA Formeln

Wie kann ich Bereiche richtig eingestellt, so dass ich 1 meine Formel Option verwenden kann?

Für Option 2, warum kann ich nicht auf die Bereiche wie in normalen Excel-Formeln beziehen?

Dies ist, weil ich diese Formel auf viele Zeilen unterhalb dieser Zelle anwenden wollte. Benutze ich eine for-Schleife?

Der Standardcode ist korrekt.

'Default 
Range("I2").Formula = "=+SUMIFS(R2C2:R434C2,R2C1:R434C1,RC[-1],R2C3:R434C3,""G"")" 

'Option 1 
    Dim MyRange As Range 
    Set MyRange = Range("B2:B434") 
    Range("I2").Formula = _ 
     "=+SUMIFS(" & MyRange & ",R2C1:R434C1,RC[-1],R2C3:R434C3,""G"")" 

'Option 2 
    Range("I2").Formula = _ 
     "=+SUMIFS($B$2:$b$434,R2C1:R434C1,RC[-1],R2C3:R434C3,""G"")" 
+0

Die Antwort @ user3598756 zeigt die korrekte Syntax zu verwenden. (Beachten Sie, dass Option 2 mit der Standardoption identisch ist, aber die Eigenschaft 'FormulaR1C1' korrekt verwendet, anstatt Excel zum Failover zu zwingen.) Ihre Option 2 funktionierte nicht (glaube ich), weil Sie Referenzmethoden mischen wollten innerhalb der einen Formel. – YowE3K

Antwort

4
'Default 

Range("I2").Formula = "=+SUMIFS(R2C2:R434C2,R2C1:R434C1,RC[-1],R2C3:R434C3,""G"")" 

'Option 1 

Dim MyRange As Range 
Set MyRange = Range("B2:B434") 
Range("I2").FormulaR1C1= _ 
    "=+SUMIFS(" & MyRange.Address(False,False,xlR1C1) & ",R2C1:R434C1,RC[-1],R2C3:R434C3,""G"")" 

'Option 2 

Range("I2").FormulaR1C1 = _ 
    "=+SUMIFS(R2C2:R434C2,R2C1:R434C1,RC[-1],R2C3:R434C3,""G"")" 
+0

@ YowE3K Ich habe die Option 1 versucht, aber einen weiteren Bereich anwenden. Aber es funktioniert nicht für mich. – koky

+0

'Option 1 Dim IRow As Long IRow = Application.WorksheetFunction.Match ("No Number", Range ("A: A"), 0) - 2 Dim MyRange As Range Dim haha ​​As String haha ​​=" B2: B“& IRow + 1 Set MyRange = Range (haha) Dim myRange1 As Range Dim haha1 As String haha1 = "A2: A" & IRow + 1 Set myRange1 = Range (haha1) Spanne ("I2"). Formel = _ "= + SUMME (" & MyRange.Address (Wahr, Wahr, XlR1C1) & "," & MyRange1.Address (Wahr, Wahr, XlR1C1) & ", R2C3: R434C3," "G" ")" ' – koky

+0

@koky - Im Code in Ihrem Kommentar, Ihr 'SUMIFS' scheint im Format' SUMME (sum_range, criteria_range1, criteria_range2, criteria2) 'zu liegen, d. H. Sie scheinen" criteria1 "zu fehlen. (Und benutzen Sie bitte die 'FormulaR1C1' Eigenschaft, wenn Sie R1C1 Stil Formel verwenden - es wird das Risiko von anderen Problemen in der Zukunft reduzieren.) – YowE3K