Boucles et references de ligne

Le code ci-dessous doit exécuter la formule = disvincenty sur une boucle, et les cellules référencées $ C $ 2, $ D $ 2 doivent descendre une ligne chaque fois dans la même colonne chaque bloc de code d'heure s'exécute jusqu'à ABF (Dernière ligne avec données dans la colonne T.) puis il sort

Pour chaque ligne, il faut exécuter les formules = Min et les deux = petites dans les mêmes colonnes déjà référencées, mais aussi abandonner une ligne à la fois – la même que la distincent, mais les valeurs étant collées chaque fois pour préserver le résultat .

Donc = distvincenty regarde deux critères dans les cellules à côté de l'autre sur la même ligne, se compare à une list en cours d'exécution dans une colonne, applique les trois autres formules à cette ligne, et se déplace vers le bas.

Dim rng As Range Dim row As Range Dim cell As Range Dim ABF As Integer ABF = Sheet9.Range("T" & Rows.Count).End(xlUp).row Set rng = Range("Q2:Q" & ABF) For Each row In rng.Rows For Each cell In row.Cells Sheet9.Range("Q2").Formula = "=distVincenty($C$2,$D$2,$R2,$S2)/1609.344" Sheet9.Range("Q2").Copy Sheet9.Range("Q2:Q" & ABF).PasteSpecial xlPasteAll Application.CutCopyMode = False Sheet9.Range("E2").Formula = "=MIN(Q:Q)" Sheet9.Range("H2").Formula = "=SMALL(Q:Q,2)" Sheet9.Range("K2").Formula = "=SMALL(Q:Q,3)" Next cell Next row 

METTRE À JOUR:

J'ai maintenant ceci:

 Dim ABF As Integer Dim i As Integer For i = 2 To Sheet9.Range("A" & Rows.Count).End(xlUp).row ABF = Sheet10.Range("AC" & Rows.Count).End(xlUp).row Sheet10.Range("AE3").Formula = "=distVincenty('Booking Workings'!$C$2,'Booking Workings'!$D$2,'User List'!$Z3,'User List'!$AA3)/1609.344" Sheet10.Range("AE3").Copy Sheet10.Range("AE3:AE" & ABF).PasteSpecial xlPasteAll Application.CutCopyMode = False Sheet9.Range("E" & i).Formula = "=MIN('User List'!AE:AE)" Sheet9.Range("H" & i).Formula = "=SMALL('User List'!AE:AE,2)" Sheet9.Range("K" & i).Formula = "=SMALL('User List'!AE:AE,3)" Next i End sub 

Le seul problème que j'ai est que chaque fois que ce code fonctionne, j'ai besoin de $ C $ 2 et $ D $ 2 pour changer comme les formules simples.

Puis-je faire ceci?

  Sheet10.Range("AE3").Formula = "=distVincenty('Booking Workings'!$C$"(I)",'Booking Workings'!$D$"(I)",'User List'!$Z3,'User List'!$AA3)/1609.344" 

UPDATE ressemble à ceci:

 "=distVincenty('Booking Workings'!$C$" & (i) & ",'Booking Workings'!$D$" & (i) & ",'User List'!$Z3,'User List'!$AA3)/1609.344" 

C'est difficile à expliquer. Faites-moi savoir si je suis proche.

 Sub Test() Dim rng As Range Dim row As Range Dim cell As Range Dim ABF As Integer Dim arrValues Dim count As Integer ABF = Sheet9.Range("T" & Rows.count).End(xlUp).row Set rng = Range("Q2:Q" & ABF) arrValues = rng.Value For Each cell In rng Sheet9.Range("Q2:Q" & ABF).Formula = "=distVincenty($C$" & cell.row & ",$D$" & cell.row & ",$R2,$S2)/1609.344" Sheet9.Range("E2").Formula = "=MIN(Q:Q)" Sheet9.Range("H2").Formula = "=SMALL(Q:Q,2)" Sheet9.Range("K2").Formula = "=SMALL(Q:Q,3)" count = count + 1 arrValues(count) = cell.Value Next cell Sheet9.Range("Q2:Q" & ABF).Value = arrValues End Sub