有一个 Excel 2016 文件,其中包含有关一些事件的数据,主表包含每个事件的 ID 和日期,如下所示:
ID Date
1 2017-10-02
2 2017
3 2017-09
4 2017-09-25
… etc.
大多数日期都包含年、月、日,但有些日期不知道具体日期,有些日期仅精确到年份。
在另一张表上,我希望按照以下算法按日期(最新优先)排序此范围:
- 首先,所有具有完整日期的事件都按通常方式排序。
- 其次,对于任何只有月份的事件,它将被插入到该月的中间:不是在第 15 天,而是在已经排序的事件的前半部分和后半部分之间。
- 第三,对于只有年份的事件,将其插入到今年的中间,类似于第 2 项。
是否可以使用没有 VBA 的 Excel 公式实现这一点?(很重要!),而无需为缺席的事件分配虚假的月份和日期?
答案1
由于您需要非 VBA 解决方案,因此我想向您推荐最简单的解决方案,要实现它,您需要遵循以下步骤。
第一部分
选择整个数据范围。
按日期升序排列。
最后应用过滤器。
查看屏幕截图,
笔记,最后一行只有年份(2017),将单元格格式化为文本,因为 Excel 不允许在单元格中仅写入年份。
第二部分,
第一个过滤数据具有完整日期值。
将过滤后的数据复制并粘贴到其他地方。
下一个过滤数据有月份和年份,也将其复制并粘贴到其他地方。
最后仅用年份过滤数据,然后复制并粘贴它们。
您过滤后的数据看起来如下面的屏幕截图所示。
请注意,如果在这种情况下您不需要分离数据,则不需要第二部分,因为在第一部分之后,您将按照所需的顺序获取数据。
我确实相信,这个解决方案可以为您提供帮助,如果没有,只需发表评论。