我需要使用过滤器对日历月份mmm
格式进行排序。
Data > Sort > Custom
可以,但我无法让过滤器工作。月份位于一列中,例如 SEP、APR、JAN、APR 等。
过滤器只是按字母顺序排序,因此它会把所有的 APR 放在第一位。
答案1
它将正确排序如果它们是实际日期。假设我们从以下开始:
我们将日期格式化为“嗯嗯”,我们现在有:
使用自动筛选我们对列进行排序:
如你所见简先到先得!
答案2
正如其他答案中提到的,您可以创建一个包含实际日期值的辅助列,并根据该列进行排序。我认为最简单的方法是使用文本中保存月份名称的=DATEVALUE(A2&"1")
位置A2
。这将为您提供当前年份每个月的第一天,但这仅适合排序目的。
但是,您可能没有能力或权限执行此操作。在这种情况下,您可以在 Excel 中添加自定义排序列表。打开排序对话框后,在下拉Custom List...
列表中选择。Order
在打开的对话框窗口中,单击NEW LIST
左侧的 ,然后在右侧创建列表,用换行符分隔每个项目。完成后,单击Add
。
如您所见,我已经为星期几和月份创建了简短版本和详细版本。添加完所需的列表后,在左侧列表中选择它并点击OK
。
答案3
我们很难理解你的问题。我猜你对以文本形式输入月份名称感到不满
并在列上设置过滤器,然后单击过滤器三角形:
这些值按字母顺序列出。
一个解决方案是创建一个辅助列,B2
等于
=TEXT(MONTH(DATEVALUE(A2 & "1")), "0# ") & A2`
并被拖下:
A2 & "1"
将裸月份名称 (JAN
) 变成类似日期的内容 (JAN1
)。DATEVALUE(A2 & "1")
将该日期字符串转换为数字日期/时间值。MONTH(DATEVALUE(A2 & "1"))
根据该日期值计算月份数 (1-12)。TEXT(MONTH(DATEVALUE(A2 & "1")), "0# ")
用前导零(如有必要)和尾随空格来格式化该数字。TEXT(MONTH(DATEVALUE(A2 & "1")), "0# ") & A2
将该两位数与月份名称连接起来。
现在,如果你过滤那列中,月份按正确顺序列出:
您可以将此辅助列放在列中Z
,使其不被人看到,或者您可以隐藏它,仅在需要更改过滤器时才取消隐藏它。