为什么添加数据时 SORT(UNIQUE()) 排序不正确?或者为什么表格不遵循单元格格式?

Why is SORT(UNIQUE()) not ordering correctly when data is added? OR Why are tables not following cell format?

我正在尝试使用以下公式对 table 中数据中的数字代码列表进行排序:=SORT(UNIQUE(B3:B43)))。但是,当我将数据添加到 table 时,它排序不正确。

使用示例数据,结果如下:

计算公式的 UNIQUE(B3:B43) 部分得到 =SORT({"1000";"2000";"3000";"4000";"5000";"6000";7000})。 7000 附近缺少引号让我认为它正在读取后来添加的数据(就像我对 7000 所做的那样,在 table 和公式生成后添加到 table 中)作为 'General' 类型,这意味着它被认为是一个数字,而不是默认为 'Text'。但是,在 table 中,单元格是左对齐的,并且显示类型为 'Text'.

我主要想知道为什么会发生这种情况,但我尝试使用 TEXT() 修复它的尝试非常失败:=SORT(UNIQUE(TEXT(B3:B43, "Text"))) 结果如下:

它似乎正在用...替换“e”。


立即编辑:

在写这篇文章的时候,我尝试在 'Text'、'General' 和 'Number' 之间更改 table 列的单元格格式几次。单元格没有立即更新,但转到第一个条目(“1000”)使它成为一个数字。我改回来了,但是 SORT 现在显示数字 1000 和文本“1000”(意味着单元格现在显示 1000、7000、“1000”、“2000”、“3000”、“4000”、 "5000", "6000").


暂时忽略 TEXT() 的怪异之处,我很困惑为什么我的公式拒绝遵循单元格格式。


编辑 2 值得注意的是,在 table 中,除了 7000 和修改后的 1000 之外,所有单元格都有“Number Stored As Text”注释。


截图,here参考

概览

通常,Excel 的 'sort' 按升序排列会将数字格式的单元格置于文本格式的单元格上方(根据 here)。您可以尝试使用常规 'sort' 功能 - 例如在主功能区中,数据 -> 排序 - 其中混乱值 returns 以下内容:

(左对齐为文本格式,即前导单引号,而右对齐为数字格式)。


解决方法

一种解决方法是使用 sortby,并使用值的文本版本:

=SORTBY(B2:B9,"'"&B2:B9)

这将是 'safer' 而不是按数字格式的值排序,例如乘数为 1,以防您的某些单元格同时包含数字 文本,例如 A101、B202 等)


备注

RE: unique- 为了简单起见,这可以简单地用作整个方程的包装器(另一种方法是在 sortby 公式中使用 unique 两次,这对于 simplicity/parsimony 显然是一个不太有利的解决方案, 还有问题错误率)..

=UNIQUE(SORTBY(B2:B9,"'"&B2:B9))