2017-09-20 5 views
-1

J'ai besoin de résumer de « initiale finale » quel que soit l'endroit où la plage commenceComment puis-je additionner une plage avec un début et une fin variable dans VBA?

Dim ws3 As Worksheet 
Dim initial As Integer 
Dim final As Integer 
Dim period As Double 
    ws3 = Worksheets("Moving Averages") 
    initial = TextBox3.Value 
    final = TextBox4.Value 
    period = TextBox8.Value 
For i = initial To final 
    ws3.Range("v1").Value = Application.Sum(ws3.Range("u" & i))/period 

Next i 

Répondre

0

Si je vous comprends bien, vous voulez résumer une plage de cellules, qui décrémente par une cellule (la partie supérieure rangée) pour chaque itération dans une boucle. Si oui, cela devrait faire l'affaire.

Voici ma configuration, j'ai les valeurs 1-10 dans les cellules A1-A10 dans Sheet1.

Voici le code que je utilise:

Public Sub SOExample() 
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") 
    Dim Final As Integer: Final = 10 
    Dim rng As Range 

    For i = 1 To Final 
     'Get a range which is the Initial cell to the Last 
     Set rng = ws.Range(ws.Cells(i, 1), ws.Cells(Final, 1)) 

     'Sum from A1-A10, then A2-A10, A3-1A0 etc and add value in column B 
     ws.Cells(i, 2).Value2 = Application.WorksheetFunction.Sum(rng) 
    Next 
End Sub 

Vous devez également être en mesure d'atteindre le même résultat avec une formule, si vous préférez. Tirez cette formule pour chaque cellule que vous voulez additionner, à mon avis c'est plus facile.

=SUM(A1:$A$10)