如何用Google Sheets QUERY函数正确排序含字母数字的列表?
解决Google Sheets QUERY函数按P1、P2…P10正确排序的问题
出现这个问题是因为QUERY默认按字符串字典序排序,"P10"作为字符串,第二个字符是"1",比"P2"的"2"ASCII码小,所以会排在P2前面。要实现按数字大小排序,有两种简单方法:
方法1:在QUERY语句内直接处理排序逻辑
假设你的P编号列是B列,数据范围是A:B,表头在第一行,可以用下面的公式:
=QUERY(A:B, "select A,B order by cast(regexextract(B, '\d+') as int) asc", 1)
regexextract(B, '\d+'):提取P编号里的纯数字部分(比如从"P10"里提取"10")cast(… as int):把提取到的数字字符串转换成整数类型,这样就能按数值大小排序- 最后的
1表示数据包含表头
方法2:用辅助列配合QUERY排序
如果觉得正则表达式不好理解,可以先加一个辅助列(比如C列)提取数字:
在C2单元格输入:
=VALUE(REGEXEXTRACT(B2, "\d+"))
下拉填充所有行后,再用QUERY按辅助列排序:
=QUERY(A:C, "select A,B order by C asc", 1)
这种方法更直观,适合不熟悉正则的用户。
内容的提问来源于stack exchange,提问作者Brandon C
相关产品推荐
相关产品推荐

