如何在excel中动态排序一组加权数据,并在不同的单元格中显示?

如何在excel中动态排序一组加权数据,并在不同的单元格中显示?,excel,Excel,以下是我正在使用的excel数据: name | poss | curr | diff | weight Adv TV | 16.0 | 0 | -16.0 | 8 Tablets | 16.0 | 0 | -16.0 | 7 CRU GA | 16.0 | 0 | -16.0 | 6 D. L. | 5.0 | 0 | -5.0 | 5 Go Phone| 15.0 | 0 | -15.0 | 4 Close | 1

以下是我正在使用的excel数据:

name    | poss  | curr  | diff  | weight
Adv TV  | 16.0  | 0     | -16.0 | 8
Tablets | 16.0  | 0     | -16.0 | 7
CRU GA  | 16.0  | 0     | -16.0 | 6
D. L.   | 5.0   | 0     | -5.0  | 5
Go Phone| 15.0  | 0     | -15.0 | 4
Close   | 16.0  | 0     | -16.0 | 3
Acc GP  | 16.0  | 0     | -16.0 | 2
Overtime| 0.00  | -2.00 | -2.0  | 1
正在从电子表格中的其他单元格中提取
name
poss
(可能)和
curr
(当前)
diff
只是
curr
减去
poss
。重量是每个项目的相对重量

我想做的是:首先,按
diff
升序排序。然后,按<代码>权重<代码>降序排序。因此,比如说,一个
diff
值为-16的行总是排序在一个
diff
值较低的行(我猜实际上技术上是一个较高的diff)之上,而不考虑权重,并且具有相同
diff
值的行的位置是由它们的权重决定的。我希望动态执行此操作,以便当确定
名称
poss
curr
的其他单元格之一发生更改时,排序自动更改。然后,我想在电子表格的一个单独部分中显示所有这些内容,尽管我确信我可以用VLOOKUP和/或INDEX解决这些问题-数据的实际排序让我发疯。

此事件宏将使用源自A1的数据块,并从H3开始将值传输到新的数据块

右键单击工作表的“名称”选项卡,然后选择“查看代码”。当VBE打开时,将其粘贴到代码表中

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:C")) Is Nothing Then
        On Error GoTo bm_Safe_Exit
        Application.EnableEvents = False
        With Cells(1, 1).CurrentRegion
            .Cells.Sort Key1:=.Columns(4), Order1:=xlAscending, _
                        Key2:=.Columns(5), Order2:=xlDescending, _
                        Key3:=.Columns(1), Order3:=xlAscending, _
                        Orientation:=xlTopToBottom, Header:=xlYes
            Range("H3").Resize(.Rows.Count, .Columns.Count) = .Cells.Value2
        End With
    End If

bm_Safe_Exit:
    Application.EnableEvents = True
End Sub
你对目的地有点模糊,所以我随意使用了H3。命名范围可能更好。这肯定会有助于清除任何旧条目,这是您的下一步。我无法提出如何清除旧条目的方法,因为具体情况可能会因具体位置而异