我有一个跟踪项目和日期的电子表格。每个项目都有一个与之关联的相应日期:
显示条件格式的屏幕截图:
如果日期等于或小于当前日期的 100 天,则日期单元格突出显示为绿色,使用此条件格式公式:
=TODAY()-C3:C12<120
如果日期距离当前日期超过 100 天,单元格将突出显示为红色,使用以下条件格式公式:
=TODAY()-C3:C12>=120
此外,所有行都按日期升序排序,空白日期单元格不产生条件格式:
=ISBLANK(C3:C12)=TRUE
我要解决的问题是,当为特定项目更新日期时,所有行都需要使用 VBA 代码动态重新排列为新的升序日期顺序。
在屏幕截图中,您会注意到第 6 项不合适。它的整行应该通过宏自动按日期顺序移动到正确的顺序中。
我试图合并我在网上找到的以下脚本。不幸的是,随之而来的是一些非常奇怪的行为,我的行以一种我无法正确理解的方式重新排列。无论我做什么,标题都会被宏移动到其他所有内容下方!
谁能看出这段 VBA 代码有什么问题?一旦我更新任何日期,它就会把我的数据弄得一团糟。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Range("C3").Sort Key1:=Range("C12"), _
Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End Sub
编辑:
“你还没有提供脚本的链接”
脚本链接: https ://www.extendoffice.com/documents/excel/3655-excel-auto-sort-by-date.html
“......更重要的是告诉我们随机脚本实际上应该做什么”
该脚本应该在输入或修改时自动对日期进行排序,可以从中推断出:
“我试图解决的问题是,当为特定项目更新日期时,所有行都需要使用 VBA 代码动态重新排列为新的升序日期顺序。”
... 和:
“它的整行应该通过宏自动按日期顺序移动到正确的顺序中。”
抱歉,如果我没有说清楚这个脚本的目的是在修改日期时动态安排日期。
这是添加新日期时发生的情况;标头移动到数据下方:
谁能看出为什么标题会移到数据下方?
我通过如下修改范围值解决了我的问题:
我最初只引用了一个单元格,而不是一系列单元格,因此脚本最终对每一行进行排序,包括标题。它现在按预期工作。
我的问题是可以回答的,这就是答案。