2016-11-19 4 views
0

Kann mir jemand bei der Umsetzung helfen?VBA Querreferenzierung in range.formula

Range("B3").Formula = "=SUMIF(Active.Select!$A:$A,Results.select!$A3,Active.select!B:B)" 

Ich habe definiert Aktive und Ergebnisse als Worksheet und mein Ziel war es, sie einen dynamischen Verweis zu haben, so, so dass das Makro CNA auf jedem Blatt der Arbeitsmappe ausgeführt werden, ohne dass irgendeine Art von statischer referece lik Sheet1 mit!

Wenn ich versuche zu laufen, was ich habe, schrieb er mich fragen aktiv zu schaffen und Ergebnisse durch ein offenes Fenster ...

Ich weiß, es könnte eine noobish Frage, aber ich bin gerade erst begonnen

Antwort

0

Unter der Annahme, dass Active und Results sind beide Worksheet Objekte, dann, wenn Sie eine Formel erstellen möchten, gehen Sie in die Zelle B3 des ActiveSheet, versuchen Sie dies:

Range("B3").Formula = "=SUMIF('" & Active.Name & "'!$A:$A,'" & Results.Name & "'!$A3,'" & Active.Name & "'!B:B)" 

Wenn Sie wollen einfach nur den Wert erhalten und es für etwas in VBA zu verwenden, versuchen Sie dies:

Dim sumIfResult As Double 
sumIfResult = Application.WorksheetFunction.SumIf(Active.Range("$A:$A"),Results.Range("$A3"),Active.Range("B:B")) 
+0

Vielen Dank der erste war genau das, was ich suchte und es funktioniert wie Charme :-) Auch der zweite Teil ist sehr nützlich für mein Lernen – dralexhunter

1

Wenn Sie die Blattnamen entfernen dann die Formel auf das Arbeitsblatt beziehen, dass es eingeschaltet ist.

Range("D2").Formula = "=SUMIF($A:$A,$E$1,$B:$B)" 

enter image description here

haben eine Methode Arbeitsblatt auswerten, die den Wert einer Formel

enter image description here

Hinweis zurück: Ich habe nicht Range("B3").Formula = "=SUMIF($A:$A,$A3,B:B)" verwenden, da es eine kreisförmige Referenz .