如何修改SORT公式实现按指定列降序排序并忽略空列?
原始数据表格
| A | B | C | |
|---|---|---|---|
| 1 | Project A | 500 | |
| 2 | Project B | 200 | |
| 3 | Project C | 600 | |
| 4 | Project D | 300 | |
| 5 | Project E | 100 | |
| 6 | |||
| 7 | Project C | 600 | |
| 8 | Project A | 500 | |
| 9 | Project D | 300 | |
| 10 | Project B | 200 | |
| 11 | Project E | 100 |
问题描述
我需要在A7:B11区域中,将A1:A5的内容按照C1:C5的值进行降序排序。尝试使用公式:
=SORT(A1:C5;;-1)
但结果不符合预期,请问应如何修改SORT公式,实现以下需求:
- 按照
C1:C5的值正确降序排序; - 忽略
A1:C5中的空B列,且不显示0值?
解决方案
直接在A7单元格输入以下公式(支持动态溢出,自动填充到目标区域):
=SORT(HSTACK(A1:A5,C1:C5),2,-1)
或者用更直观的列选取写法:
=SORT(CHOOSECOLS(A1:C5,1,3),2,-1)
公式说明
HSTACK(A1:A5,C1:C5)/CHOOSECOLS(A1:C5,1,3):仅提取A列(项目名)和C列(排序数值),自动跳过空的B列,避免空值或0值出现在结果中;SORT(...,2,-1):指定以结果的第2列(原C列数值)作为排序依据,-1表示降序排列;- 公式会自动溢出填充
A7:B11区域,完全匹配目标输出格式。
如果是不支持动态溢出的旧版Excel,可使用数组公式(输入后按Ctrl+Shift+Enter确认):
=INDEX(SORT(HSTACK(A1:A5,C1:C5),2,-1),ROW(A1:A5),COLUMN(A1:B1))
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

