Je travaille donc sur un projet et j'essaie d'obtenir que mon code VBA détaille la formule qui se trouve dans la cellule M3 jusqu'à la fin de l'ensemble de données. J'utilise la colonne L comme base pour déterminer quelle est la dernière cellule contenant des données. Ma formule est une concaténation de deux cellules avec une virgule de texte entre elles. Donc, dans Excel, ma formule est = G3 & "," & L3
Je veux qu'Excel réduise cette formule afin que dans la cellule M4, il s'agisse de = G4 & "," & L4 La cellule M5 serait = G5 & "," & L5, etc.
Mon code ressemble à:
Range("$M$3").Formula = Range("G3") & (",") & Range("L3")
Dim Lastrow As Long
Application.ScreenUpdating = False
Lastrow = Range("L" & Rows.Count).End(xlUp).Row
Range("M4").FormulaR1C1 = Range("G4") & (",") & Range("L4")
Range("M4").AutoFill Destination:=Range("M4:M" & Lastrow)
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
Mon résultat consiste simplement à extraire les valeurs de texte de la cellule M3 jusqu'à la fin du jeu de données. J'ai cherché pendant plusieurs heures à la recherche d'une solution, mais je n'arrive pas à en trouver une qui tente d'accomplir ce que je cherche.
C'est un one-line en fait. Pas besoin d'utiliser .Autofill
Range("M3:M" & LastRow).Formula = "=G3&"",""&L3"
Alternativement, vous pouvez utiliser FillDown
Range("M3") = "=G3&"",""&L3": Range("M3:M" & LastRow).FillDown
Pour les personnes avec une question similaire et trouver ce post (comme je l'ai fait); Vous pouvez le faire même sans lastrow si votre jeu de données est formaté comme un tableau.
Range("tablename[columnname]").Formula = "=G3&"",""&L3"
Ce qui en fait un vrai one-line. J'espère que ça aide quelqu'un!
Réponse merveilleuse! Je devais remplir les cellules vides dans une colonne où il y avait des titres dans les cellules qui s'appliquaient aux cellules vides ci-dessous jusqu'à la cellule de titre suivante.
J'ai utilisé votre code ci-dessus pour développer le code ci-dessous mon exemple de feuille ici. J'ai appliqué ce code en tant que macro ctl/shft/D pour parcourir rapidement la colonne en copiant les titres.
--- Exemple de feuille de calcul ------------ Title1 est copié dans les lignes 2 et 3; Title2 est copié dans les cellules situées en dessous des rangées 5 et 6. Après la deuxième exécution de la macro, la cellule active est la cellule Title3.
' **row** **Column1** **Column2**
' 1 Title1 Data 1 for title 1
' 2 Data 2 for title 1
' 3 Data 3 for title 1
' 4 Title2 Data 1 for title 2
' 5 Data 2 for title 2
' 6 Data 3 for title 2
' 7 Title 3 Data 1 for title 3
----- Code de copie ----------
Sub CopyDown()
Dim Lastrow As String, FirstRow As String, strtCell As Range
'
' CopyDown Macro
' Copies the current cell to any empty cells below it.
'
' Keyboard Shortcut: Ctrl+Shift+D
'
Set strtCell = ActiveCell
FirstRow = strtCell.Address
' Lastrow is address of the *list* of empty cells
Lastrow = Range(Selection, Selection.End(xlDown).Offset(-1, 0)).Address
' MsgBox Lastrow
Range(Lastrow).Formula = strtCell.Formula
Range(Lastrow).End(xlDown).Select
End Sub