2017-07-22 3 views
1

Wie kann ich diesen Code verkürzen? Ich versuchte auch SUM auf einer Reihe von Array-Elementen, aber das hat nicht funktioniert, weil ich nicht die richtige Syntax kenne. Vielen Dank im Voraus.verkürzen Code Bereich Array-Elemente

Workbooks("items.xlsm").Sheets(1).Cells(r, 107).Value = _ 
arr(r, 4) + arr(r, 5) + arr(r, 6) + arr(r, 7) + arr(r, 8) + arr(r, 9) 
+ arr(r, 10) + arr(r, 11) + arr(r, 12) + arr(r, 13) 
+ arr(r, 14) + arr(r, 15) + arr(r, 16) + arr(r, 17) 
+ arr(r, 18) + arr(r, 19) + arr(r, 20) + arr(r, 21) 
+ arr(r, 22) + arr(r, 23) + arr(r, 24) + arr(r, 25) 
+ arr(r, 26) + arr(r, 27) + arr(r, 28) + arr(r, 29) 
+ arr(r, 30) + arr(r, 31) + arr(r, 32) + arr(r, 33) 
+ arr(r, 34) + arr(r, 35) + arr(r, 36) + arr(r, 37) 
+ arr(r, 38) + arr(r, 39) + arr(r, 40) + arr(r, 41) 
+ arr(r, 42) + arr(r, 43) + arr(r, 44) + arr(r, 45) 
+ arr(r, 46) + arr(r, 47) + arr(r, 48) + arr(r, 49) 
+ arr(r, 50) + arr(r, 51) + arr(r, 52) + arr(r, 53) 
+ arr(r, 54) + arr(r, 55) 

Antwort

1

Sie konnten die r'th row vollständig aus dem Array-Summen- mit SUM und INDEX mit den folgenden:

Workbooks("items.xlsm").Sheets(1).Cells(r, 107).Value = _ 
    Application.Sum(Application.Index(ar, r)) 

Aber da Sie wollen nur ein Stück der Reihe summieren, Spalten 4 bis 55:

Workbooks("items.xlsm").Sheets(1).Cells(r, 107).Value = _ 
    Application.Sum(Application.Index(ar, r, [Row(4:55)])) 

Simplest, implementieren eine For Schleife, dh

Dim sum as double, i as long 
For i = 4 to 55 : sum = sum + arr(r, i) : Next 
Workbooks("items.xlsm").Sheets(1).Cells(r, 107).Value = sum 
+1

die For-Schleife funktioniert sehr gut. Auch die Notation mit Doppelpunkt ist neu für mich. Schön und kurz. – scorpion

Verwandte Themen