在附件中,当我按降序对C列进行排序时,它会将空白置于顶部。 (它不应该发生)
D列只是"复制为值"列C和排序在D列中正常工作
所以我猜我的公式在C栏中存在一些问题
文件链接:https://drive.google.com/open?id=1TRDympt3-CFn6916aLGxd3du5SL_FaxM
我正在使用的公式:= IF(A3 ="","",IF(ISERROR(MATCH(TRIM(S!$ A3),$ G $ 4:$ ģ8,0 $)),$ B3,"&#34))
答案 0 :(得分:2)
这是由空字符串和空单元格之间的差异引起的。
公式的结果是空字符串“”,它与空单元格中的“无”字符不同。
排序时Excel会忽略真正的空单元格,而空字符串实际上是一个只包含空字符串字符的字符串,并包含在排序中。
我怀疑D列正确排序的原因是因为您只复制了C列中具有正常值的单元格。如果复制整个列(包括看起来像空白单元格的那些),那么问题仍然存在,因为那样你' ve还复制了空字符串字符。
在一列值中,如在D列中,您可以使用带有分隔符选项的“文本到列”工具删除空字符串,并取消选择所有分隔符。 (与将文本存储为实际数字的方式相同。)
但是对于公式,如在C列中,没有办法告诉Excel真正返回“Nothing”。
作为一种解决方法,如果您只有正值,则可以更改公式以返回值0而不是空字符串“”。因此,当按降序排序时,0值将放在底部。
然后,您还可以通过更改列的数字格式来隐藏0值:
此格式表示显示:
答案 1 :(得分:1)
如果你需要能够按升序或降序排序,那么我不能仅仅通过公式来想出一个简单的解决方案。
下一个最简单的解决方案可能是应用自动过滤器来排除空白(实际上确实摆脱了空字符串)。
如果您通过VBA自动执行此操作,我认为首先对升序进行排序最简单,应用过滤器来删除空字符串,然后按降序排序。
您还可以合并前十名过滤器。