将值添加到已定义列中的最后一个空单元格

时间:2014-08-13 13:54:00

标签: excel vba excel-vba copy

我的模型从一张纸上取两个数字,将平均值添加到已定义列的最后一个单元格中的另一张纸上。我遇到的问题是,当我插入一个新列时,引用会被错过并且我正在尝试使用一个宏来获取平均值2.在第二个工作表上查找特定列3.粘贴最后一个单元格的平均值。

请帮我解决这个问题。我一直试图让我的头围很长时间。

谢谢。

这是我的代码:它现在基本上做的是找到最后一个空行,我必须在列中输入一个数字来引用一个单元格。我想要的是使列引用动态,所以当我插入一个新列时,我不必更改宏。

    Private Sub CommandButton1_Click()

    Dim emptyRow As Long, Answer As Double, result As String

    Application.ScreenUpdating = False

    Sheet1.Activate
    RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count

    With Sheets("Sheet1").Range("A1")
        .Offset(1, 2).Value = Me.TextBox1.Value
        .Offset(1, 3).Value = Me.TextBox2.Value
        .Offset(2, 2).Value = Me.TextBox3.Value
        .Offset(2, 3).Value = Me.TextBox4.Value
        .Offset(3, 2).Value = Me.TextBox5.Value
        .Offset(3, 3).Value = Me.TextBox6.Value
        .Offset(4, 2).Value = Me.TextBox7.Value
        .Offset(4, 3).Value = Me.TextBox8.Value
    End With

    Sheet2.Activate

    emptyRow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row + 1
   Answer = Application.WorksheetFunction.Average(Range("C2:D2"))
    Sheets("Sheet2").Cells(emptyRow, 1).Value = Answer

    Answer = Application.WorksheetFunction.Average(Range("C3:D3"))
    Sheets("Sheet2").Cells(emptyRow, 2).Value = Answer

    Answer = Application.WorksheetFunction.Average(Range("C4:D4"))
    Sheets("Sheet2").Cells(emptyRow, 3).Value = Answer

    Answer = Application.WorksheetFunction.Average(Range("C5:D5"))
    Sheets("Sheet2").Cells(emptyRow, 4).Value = Answer
End Sub

1 个答案:

答案 0 :(得分:0)

一种方法是为列分配名称

Sub demo()
    Range("B:B").Cells.Name = "expenses"
End Sub

如果在工作表的开头插入了列,则会调整命名范围。

修改#1:

在分配名称之后,以下是填充费用的第一个空单元格(位于列底部)的示例列值 123

Sub TheNextStep()
    Dim expCol As Long, FirstEmptyRow As Long
    expCol = Range("expenses").Column
    FirstEmptyRow = Cells(Rows.Count, expCol).End(xlUp).Row + 1
    Cells(FirstEmptyRow, expCol).Value = 123
End Sub