【问题标题】:Sorting descending by month string and ascending by week string按月份字符串降序和按星期字符串升序排序
【发布时间】:2017-12-05 20:39:47
【问题描述】:

我有一列用于数据验证下拉列表,格式如下:

M01 W01 random strings
M01 W02 random strings
M01 W03 random strings
M02 W01 random strings
M02 W02 random strings
M02 W03 random strings

M=月,W=周

现在我的列按降序排序,所以最近的月份在顶部:

M02 W03 random strings
M02 W02 random strings
M02 W01 random strings
M01 W03 random strings
M01 W02 random strings
M01 W01 random strings

有没有办法对它进行排序,以便周数升序:

M02 W01 random strings 
M02 W02 random strings
M02 W03 random strings
M01 W01 random strings
M01 W02 random strings
M01 W03 random strings

我认为将“M00”正则提取到一个范围内,然后用它来查询排序原始列但似乎无法让它工作:

=query({original column; regextract M00} , "select Col1, order by Col2 desc"}

编辑:NVM 我是个白痴,我所要做的就是替换;用 , 在查询中{}。

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    为什么不是常规的sort 函数?

    =SORT(A:C,1,0,2,1)

    编辑

    如果是 1 列,请先使用 regex

    =TRANSPOSE(QUERY(TRANSPOSE( SORT(IFERROR(REGEXEXTRACT(A:A,"(M\d{2}) (W\d{2}) (.*)")),1,0,2,1) ),,2^50))

    transposequery 部分是加入文本回:

    M02 W01 random strings
    M02 W02 random strings
    M02 W03 random strings
    M01 W01 random strings
    M01 W02 random strings
    M01 W03 random strings
    

    【讨论】:

    • 对不起,我不清楚,“M0 W03 str”是 1 列中的单个字符串,所以我需要将月份重新提取到第二列进行两级排序。 =sort({original column; regextract M00} ,1,0,2,1) 构成 2 列,但我只能过滤第一列。这实际上是一个更好的解决方案,因为查询不适用于 excel。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2014-09-08
    • 2017-01-09
    • 2018-03-24
    • 2022-07-29
    • 1970-01-01
    相关资源
    最近更新 更多