【问题标题】:Insert new row and sort automatic in Excel在 Excel 中插入新行并自动排序
【发布时间】:2016-03-01 21:02:59
【问题描述】:

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

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

我有这个插入带有用户输入值的新行:

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 - 欠款总额

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

【问题讨论】:

  • 不能把新行放在最下面,然后对表格进行排序吗?
  • 你能正确解释一下是什么问题吗?是插入新行还是对数据进行排序?还是两者都有?
  • 数据格式如下: Name - Money Provided W1 - Money ProvidedW2 - Drinks W1 - Drinks W2 - Total Money owed 输入新名称时,该行需要像其他行一样复制公式.表格底部是另一行,其中包含“提供的钱”和“欠的钱”的总和。

标签: vba excel


【解决方案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

【讨论】:

  • 在我文档的底部是另一行,其中包含一些数据总和。所以我想我真的需要插入一个新行。此新行还应使用与其他行相同的样式和公式。我不知道这是否会自动发生......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多