关于vba:插入新行并在Excel中自动排序

Insert new row and sort automatic in Excel

我在Excel中有一个表,其中包含与某些数据相关联的名称列表。我希望能够创建新行(使用类似形式的数据)并将它们排序到现有行中。

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

我已经准备好插入具有用户输入值的新行:

1
2
3
4
5
6
7
8
9
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
2
3
lastRow = Range("A1").End(xlDown).Row + 1
Range("A" & lastRow) = data1
Range("B" & lastRow) = data2 'etc.

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

1
2
3
4
5
6
7
8
9
10
11
12
    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