创建一个Excel宏来跨变量/未知列复制公式



我想在excel中创建一个宏,我可以在其他工作表上重用把公式从B4中抄下来。到行号x

我将粘贴不同行的数据到几个不同的工作表的列A。我将有一个按钮在每个工作表,我想标签"复制公式"。我已经编写了一些公式,可以将文本解析为3到250列,具体取决于工作表。我希望宏从B4突出显示到select . end (xltorright),然后将该选择向下复制,直到a列中的最后一行数据

我在想这样的东西,但我一直得到一个错误在第6行。

    Dim strCurrentSheet As String
    Dim LastRow As Integer
    Dim LastCol As Integer
    LastRow = Range("A4").End(xlDown).Row
    LastCol = Range("B4").End(xlToRight).Column
    Range(Cells(4, 2), Cells(4, LastCol)).AutoFill _ 
    Destination:=Range(Cells(5, 2), Cells(LastRow, LastColumn))

从一开始就考虑使用Excel表格(Insert->Table),而不是VBA宏来做这件事-它或多或少内置了这个功能:

如果在表中的空列(或它旁边的相邻列)中输入公式,Excel将自动将公式应用于所有行。如果您在任何地方添加/复制数据,它将自动扩展表,因此也将公式应用于所有列!

…我没有对这段代码进行过多的测试,但这至少应该为您提供了一个良好的起点,并为您的道路奠定了基础:

Sub test()
  ' Get the last row and column on the sheet - store them in the variables
  Dim LastRow As Integer
  Dim LastCol As Integer
  LastRow = Range("A1").End(xlDown).Row
  LastCol = Range("B4").End(xlToRight).Column
  ' Copy cells B4:B[LastCol]  to  cells B4:[LastRow][LastCol]
  Range(Cells(2, 4), Cells(2, LastCol)).AutoFill _
         Destination:=Range(Cells(2, 4), Cells(LastRow, LastCol))
End Sub

希望有所帮助

   Dim colABottom As Range
    Set colABottom = Range("A1").End(xlDown)
    Dim colEnd As Range
    Set colEnd = Range("A1").End(xlToRight)
    Dim lColStart As Long
    lColStart = 2
    Dim lColEnd As Long
    lColEnd = colEnd.Column
    Dim lRowStart As Long
    lRowStart = 1
    Dim lRowEnd As Long
    lRowEnd = colABottom.Row
    Dim startRange As Range
    Set startRange = Range("B1")
    Dim sourceRange As Range
    Set sourceRange = Range(startRange, startRange.End(xlToRight))
    Dim destinationFillRange As Range
    Set destinationFillRange = Range(Cells(lRowStart, lColStart), Cells(lRowEnd, lColEnd))
    sourceRange.AutoFill Destination:=destinationFillRange

最新更新