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 |