我在Excel 2016中使用这个公式,所以它没有排序功能。
=IFERROR(INDEX($F$41:$F$500, MATCH(SMALL(IF(COUNTIF($J$1:J1,$F$41:$F$500)=0,COUNTIF($F$41:$F$500,"<"&$F$41:$F$500),""),ROW(1:1)),COUNTIF($F$41:$F$500,"<"&$F$41:$F$500),0)),"")
希望从单元 J2 而不是 J22 开始。我相信这是因为我的公式需要排除空白单元格,但事实并非如此。此外,由于某种奇怪的原因,该公式遗漏了一些数据。 我在 B2:B35 列中有 J2:J35 应该是什么样子。突出显示的是 J2:J35 公式中还应显示的内容。
这是它的链接。 https://1drv.ms/x/s!AgYDS7saPf0DhsYpr01N9vmZhFUtCQ?e=n7wz6Z
正如您在这些图像中看到的,引用的单元格未排序并且有空白。我需要公式来排序和删除空格。谢谢!
该公式未按预期工作,因为该方法用于没有重复的输入。
在 Excel for Microsoft 365 中轻松获取唯一项目的排序列表:
=SORT(UNIQUE(TOCOL(_0_unsorted_input,1)))
由于这些函数在 Excel 2016 中不可用,因此需要执行一些临时步骤。这是一种方法:
消除重复项:
索引修剪输入
使用
FREQUENCY
选择唯一值
使用
COUNTIF
按字母顺序排列修剪后的唯一输入
删除空白
作为第二步删除空白可以工作,但它需要手动选择临时范围 - 所以我选择了这个顺序。
已用名称管理器
定义范围和公式的名称可以轻松遵循步骤并排除故障。因此定义了以下名称(公式>名称管理器>新建)
姓名 | 指: |
---|---|
_0_unsorted_input | =Sheet1!$B$4:$B$500 替换为您的输入范围 |
_0i_输入_索引 | =ROW(_0_unsorted_input) - (ROW(INDEX(_0_unsorted_input, 1, 1))) + 1 |
_1_修剪_输入 | =TRIM(_0_unsorted_input) |
_2_匹配 | =匹配(_1_trimmed_input,_1_trimmed_input,0) |
_3_频率 | =频率(_2_匹配,_2_匹配) |
_4_uniq | =INDEX(_1_trimmed_input,_5_uniq_index) |
_4_uniq_范围 | =Sheet1!$D$4:$D$500 与输入行数相同的范围 |
_5_uniq_index | =IF((_0_unsorted_input <> """") * (_3_freq),_2_matched,"""") |
_6_countif_less_than | =IF((_4_uniq_range = "") + ISERROR(_4_uniq_range),"", COUNTIF(_4_uniq_range,"<" & _4_uniq_range)) |
_7_排序_索引 | =小(IF(ISERROR(_4_uniq_range),"",_6_countif_less_than),_0i_input_index) |
_8_临时_排序 | =INDEX(_4_uniq_range,MATCH(_7_sorted_index,_6_countif_less_than,0)) |
_8_interim_sort_range | =Sheet1!$E$4:$E$500 与输入行数相同的范围 |
_9_已排序 | =INDEX(_8_interim_sort_range,1,1):INDEX(_8_interim_sort_range,MATCH(TRUE,ISERROR(_8_interim_sort_range),0)-1,1) |
使用
COUNTIF
的步骤以及删除空格的最后一步需要输入范围。因此,输入这些步骤的公式和最终结果的公式,以下是示例的输入方式:
这些是数组公式,需要使用 Control + Shift + Enter
输入细胞 | 公式 |
---|---|
D4,选择 D4:D500 | =
|
E4,选择E4:E500 | =
|
F4 | =
|
我已在 Excel for Microsoft 365 下对此进行了测试 - 明天将在 Excel 2016 下进行测试。