我遇到了以下问题,我从一个标签页查询到另一个标签页,然后试图按照评分(AA)和过去的天数(X,这是一个负数,因为它代表了超过截止日期的天数)对其中一列进行排序。查询的结果如下。
=QUERY('(Name of Tab1)'!K7:AA,"SELECT K, N , X, Z, AA WHERE X != 'Closed' ORDER BY X ASC")
问题是我得到的X列的排序是这样的。
-279.00
-3.00
-10.00
-106.00
-11.00
-12.00
-12.00
-13.00
-14.00
-144.00
-149.00
很明显,这不是我想要的排序,而且很明显,它是把它当作字符串而不是int来读的。然而,每当我尝试使用SQL函数,如cast为int时,它就不工作了。我怎样才能把这些值转换成int,这样它就能正确排序了?先谢谢你。
解决方案:
如何通过包含数字作为文本的列进行排序查询?
你所面临的问题,与 “数字” 是负数。这是因为包含数字的列单元格被格式化为文本。文本单元格不能被排序.
请使用以下公式。
=QUERY({'Name of Tab1'!K7:W44,ARRAYFORMULA('Name of Tab1'!X7:X44*1),'Name of Tab1'!Y7:AA44},
"SELECT Col1, Col4, Col14 , Col16, Col17 WHERE Col14 is not null and Col1<>'' ORDER BY Col14")
公式是如何计算的:
- 我们把我们的范围分成三部分
- 摆在我们面前的部分 “数字” 专栏
'Name of Tab1'!K7:W44
- 我们的 “数字 “栏
ARRAYFORMULA('Name of Tab1'!X7:X44*1)
- 最后一部分
'Name of Tab1'!Y7:AA44
- 摆在我们面前的部分 “数字” 专栏
- 因为我们现在的3个范围都在大括号里了
{}
我们不能使用列字母。相反,我们必须使用Col1
,Col4
等,其中Col1
是我们合并范围的第1列,Col4
是我们以前的X
栏目等。 - 关于我们 “数字” 专栏
ARRAYFORMULA('Name of Tab1'!X7:X44*1)
. 安 Arrayformula乘以1,将每一个含有数字的文本单元格变成数字格式。 和有文字的 (在我们Closed
) 归于#VALUE!
的时候会被跳过。WHERE Col14 is not null
(而不是我们原来的WHERE X != 'Closed'
)
使用的功能。