VBA将公式填入列中的最后一行

时间:2014-09-11 13:29:12

标签: excel vba excel-vba formula

所以我正在开展一个项目,我试图让我的VBA代码在单元格M3中一直下到数据集的末尾。我使用L列作为我的基础来确定包含数据的最后一个单元格是什么。我的公式是两个单元格的连接,它们之间有一个文本逗号。所以在excel我的公式是= G3&","& L3

我想要excel来绘制这个公式,所以在单元格M4中它将是= G4&","& L4 单元格M5将是= G5&","& L5等等。

我的代码如下:

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

我的输出只是将单元格M3中的文本值一直向下拉到数据集的末尾。我已经搜索了几个小时试图寻找修复,但似乎无法找到一个试图完成我想要的东西。

4 个答案:

答案 0 :(得分:33)

实际上是一个班轮。无需使用.Autofill

Range("M3:M" & LastRow).Formula = "=G3&"",""&L3"

答案 1 :(得分:9)

对于有类似问题的人,找到这篇文章(就像我一样); 如果您的数据集格式化为表格,即使没有lastrow也可以这样做。

Range("tablename[columnname]").Formula = "=G3&"",""&L3"

使它真正成为一个班轮。希望它可以帮助别人!

答案 2 :(得分:9)

或者,您可以使用 FillDown

Range("M3") = "=G3&"",""&L3": Range("M3:M" & LastRow).FillDown

答案 3 :(得分:0)

精彩的回答!我需要填充列中的空单元格,其中单元格中的标题应用于下面的空单元格,直到下一个标题单元格。

我使用上面的代码来开发我的示例表下面的代码。我将此代码应用为宏ctl / shft / D,以快速向下运行复制标题的列。

---示例电子表格------------ Title1被复制到第2行和第3行; Title2被复制到第5行和第6行中它下面的单元格。在第二次运行宏之后,活动单元格是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

----- CopyDown代码----------

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