pourrait-il aider? Merci! P> update strong> p> **** Comment puis-je faire fonctionner la boucle automatiquement sans avoir à entrer manuellement la formule dans les deux premières cellules et Cliquez sur Macro? J'ai inclus deux coups d'écran pour montrer ce que je veux dire. Vous trouverez ci-dessous mon code actuel.
Aussi comment puis-je faire courir la boucle à travers toutes les colonnes / lignes? (horizontiquement) **** p>
Merci! P> Sub Loop3()
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 1).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(0, -1).Select
Dim i As Integer
Dim j As Integer
With Worksheets("Loop")
i = 1
Do Until .Cells(10, i).Value = "blank"
For j = 1 To 10
.Cells(j, i).Formula = "=INDEX('ZAINET DATA'!$A$1:$H$39038,MATCH(Loop!E$7&TEXT(Loop!$A9,""M/D/YYYY""),'ZAINET DATA'!$C$1:$C$39038,0),4)"
.Cells(j, i + 1).Formula = "=INDEX('ZAINET DATA'!$A$1:$H$39038,MATCH(Loop!E$7&TEXT(Loop!$A9,""M/D/YYYY""),'ZAINET DATA'!$C$1:$C$39038,0),5)"
Next j
i = i + 2
Loop
End With
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 1).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(0, -1).Select
End Sub
4 Réponses :
Essayez ceci:
Créez une macro avec la chose suivante: p> Cette macro particulière copiera la cellule actuelle (placez votre curseur dans la cellule Vol vous souhaite copier) sur une ligne, puis copiez la cellule de capuchon également. p> Ceci n'est qu'une seule boucle afin que vous puissiez automatiser la copie volée et le capuchon de votre cellule active actuelle (où votre curseur est) à basse 1 rangée. P> Il suffit de le mettre à l'intérieur d'une déclaration de boucle pour le faire x nombre de fois.
comme: p>
MERCI! Je l'ai travaillé. Maintenant, j'ai besoin de la boucle pour courir jusqu'à ce que ma colonne latérale gauche (plage de date) soit vide. Je verrai comment je peux le faire - si quelqu'un peut saisir - apprécierait grandement.
Voici ma suggestion:
Dim i As integer, j as integer
With Worksheets("TimeOut")
i = 26
Do Until .Cells(8, i).Value = ""
For j = 9 to 100 ' I do not know how many rows you will need it.'
.Cells(j, i).Formula = "YourVolFormulaHere"
.Cells(j, i + 1).Formula = "YourCapFormulaHere"
Next j
i = i + 2
Loop
End With
Merci - qui a copié et collé ma formule à travers les cellules, mais pour que cela puisse faire cela, je dois entrer manuellement la formule dans les deux premières cellules, puis cliquez sur Macro. Y a-t-il un moyen de le rendre complètement automatique? Par exemple, si ma feuille est complètement vide comme dans la troisième station, comment la formule peut-elle être automatiquement remplie?
Avec Justhe Code ici, la formule est écrite sur la propriété de formule, elle n'est pas copiée. Il n'est pas nécessaire que vous puissiez écrire la formule dans les deux premières cellules.
Je recommanderais l'objet de la gamme Autofill a> Méthode pour ceci:
'Set some example values'
Range("A1").Value = "1"
Range("B1").Formula = "=NOW()"
Range("C1").Formula = "=B1+A1"
'AutoFill the values / formulas to row 20'
Range("A1:C1").AutoFill Destination:=Range("A1:C20")
Celui-ci est similaire à la solution de @ Wilhelm. La boucle automate basée sur une plage créée en évaluant la colonne Date peuplée. Cela a été giflé ensemble basé strictement sur la conversation ici et des captures d'écran.
Veuillez noter que cela suppose que les en-têtes seront toujours sur la même rangée (rangée 8). Changer la première ligne de données (déplacement de l'en-tête haut / bas) entraînera la rupture de la plage de gamme, à moins que vous n'ayez modifié le bloc de plage à prendre dans la ligne d'en-tête de manière dynamique. Les autres hypothèses incluent que les en-têtes de colonne de formule Vol et de capacité sont nommés "Vol" et "Cap" respectivement. P>
Sub Loop3()
Dim dtCnt As Long
Dim rng As Range
Dim frmlas() As String
Application.ScreenUpdating = False
'The following code block sets up the formula output range
dtCnt = Sheets("Loop").Range("A1048576").End(xlUp).Row 'lowest date column populated
endHead = Sheets("Loop").Range("XFD8").End(xlToLeft).Column 'right most header populated
Set rng = Sheets("Loop").Range(Cells(9, 2), Cells(dtCnt, endHead)) 'assigns range for automation
ReDim frmlas(1) 'array assigned to formula strings
'VOL column formula
frmlas(0) = "VOL FORMULA"
'CAPACITY column formula
frmlas(1) = "CAP FORMULA"
For i = 1 To rng.Columns.count
If rng(0, i).Value = "Vol" Then 'checks for volume formula column
For j = 1 To rng.Rows.count
rng(j, i).Formula= frmlas(0) 'inserts volume formula
Next j
ElseIf rng(0, i).Value = "Cap" Then 'checks for capacity formula column
For j = 1 To rng.Rows.count
rng(j, i).Formula = frmlas(1) 'inserts capacity formula
Next j
End If
Next i
Application.ScreenUpdating = True
End Sub
@ Techgirl09, si vous suivez toujours cette question, je sais qu'il y a un moyen plus facile de le faire. 2 questions: est la gamme que la formule est copiée dans toujours la même (c'est-à-dire que vous pouvez en faire une plage nommée)? Et voulez-vous que cela déclenche sur l'activation de la feuille, ou autre chose?
On dirait que Kevin vous a envoyé un email pendant que vous prenez la capture d'écran, assurez-vous de lui répondre.