在Excel中插入新行并自动排序

时间:2015-04-25 14:07:53

标签: excel vba excel-vba

我在Excel中有一个表,其中列出了与某些数据相关联的名称。我希望能够创建新行(使用类似于某些内容的数据)并将它们分类到现有行中。

我真的不知道如何在Excel中编写VBA代码,也找不到任何根据数据插入行的示例。大多数示例都插入新的空白行来设置表的样式。

我已经有了这个插入输入值为user的新行:

Sub Test_Function()
Dim val As String
val = InputBox("Enter your name", "May I know your Name!")

'Inserting a Row at at Row 2
Range("A3").EntireRow.Insert
Range("A3").Formula = val
'
End Sub

更多信息:数据在此布局中: 名称 - 提供的钱W1 - 提供的钱W2 - 饮料W1 - 饮料W2 - 欠款总额

输入新名称时,该行需要像其他行一样复制公式。在表格的底部是另一行,其中包括“提供的钱”和“欠款”。 (我想因此我不能把它添加到最后一行,而是插入一个新的,不确定......)

1 个答案:

答案 0 :(得分:1)

我不会插入新行,而是将插入的结果放在工作表的末尾:

lastRow = Range("A1").End(xlDown).Row + 1
Range("A" & lastRow) = data1
Range("B" & lastRow) = data2 'etc.

然后按您喜欢的键对整个工作表进行排序(此示例用于按A列降序排序A-C - 记录的宏):

    Columns("A:C").Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A1:A" & lastRow), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:C" & lastRow)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With