在Excel中,有没有办法动态更新任务列表的优先级?例如,如果您有一个优先级为1,5,3,2,4的列,并且用户添加了一个带有新任务的新行并为其指定了优先级1,则该列表将更新为2,6,4,3 ,5,1?
或者还有其他(更好的?)方式吗?我宁愿不必对列表进行排序,然后在每次添加或删除新任务时手动更改编号。另外,我不认为使用电子表格的人会这样做。
答案 0 :(得分:1)
我会倾向于VBA答案,但我找到了公式和添加列,以便在没有宏的情况下完成所需的操作。 见下图
要保持此功能从一个添加到下一个添加,在添加每个新任务后,您必须在E:F列中复制已排序的任务列表,将值粘贴到A3中,并删除B2和C2中的值。然后你需要在列C:F的底部拖动你的公式,因为你的列表变长了。
这是我在单元格公式中可以看到的最大问题,更新需要复制粘贴删除。
答案 1 :(得分:0)
查看以下代码。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngPriorityList As Range
Dim lNewValue As Long
Dim myCell As Range
If IsNumeric(Target.Value) Then 'Only run if the a number was entered
Set rngPriorityList = ThisWorkbook.Names("priority").RefersToRange 'the named range for the task list
If Not Intersect(Target, rngPriorityList) Is Nothing Then 'Only run the following in the cell being updated was in the priority list range
For Each myCell In rngPriorityList.Cells 'Loop through the priority list range
If myCell.Value = Target.Value _
And myCell.Address <> Target.Address Then 'Finding cells with the same value, excluding the cell being changes
myCell.Value = myCell.Value + 1 'Increment the prioriry by 1
End If
Next myCell
End If
End If
End Sub