在Excel中将sorting公式sorting为字母

我目前正在制定一个电子表格,它会自动删除重复项目并按字母顺序排列:

在这里输入图像说明

我在列G中使用COUNTIF()函数创buildsorting顺序,然后使用VLOOKUP()在列J中查找sorting。

我遇到的问题是,我似乎无法让我的SortOrder列正常工作。 目前它创build了两个数字1的索引,这意味着以黄色突出显示的单元格被遗漏,并且sorting列表中的最后一个条目为空:

在这里输入图像描述

如果任何人都能find并纠正这个错误,我将非常感激,因为它已经把我疯狂的一整天! 非常感谢。

我将提供我通常的方法来将原始数据自动引入sorting的重复删除列表中:

假设原始数据在列A中。在列B中,每当行在A列中显示非重复项时,使用此公式来增加计数器。Hardcord B2为“1”,并在B3中使用此公式并向下拖动。

 =if(iserror(match(A3,$A$2:A2,0)),B2+1,B2) 

这利用了我们在修改列表中引用这个行计数器的事实,我们将使用匹配函数,它只检查第一个匹配的数字。 然后说你想在列D上列出新的数据列表(通常我这样做是为了显示目的,所以要么将组成列[组]隐藏形成公式的列,要么在另一个列表上执行此操作)。 你可以避免这一步,但是如果你已经使用了帮助者列,我通常在不同的列中执行每一步 – 更容易logging。 在列C中,从C3 [C2硬编码为1]开始向下拖动,只需要一个简单的计数器,在列表的末尾进行错误检查:

 =if(C2<max(B:B),C2+1," ") 

然后在D列,从D2开始拖下去:

 =iferror(index(A:A,match(C2,B:B,0)),"") 

索引函数就像vlookup函数的一半 – 当你提供一个行号的时候,它将结果从给定的数组中取出。 匹配函数就像vlookup函数的另一半 – 它为您提供一个项目出现在给定数组中的行号。

希望这可以帮助你在未来。

Jeeped的评论所暗示的这种错误的实际原因是,除非您进行转换,否则您不能将string与数字进行有意义的比较。 所以COUNTIF分别统计数字和文字。

20212会计1,因为它是唯一的(或最低的)号码。

CS10Z002将计数为1,因为它是按字母顺序排列的第一个文本string。

另一种方法是如果当前单元格包含文本,则将计数的数字添加到计数中: –

 =COUNTIF(INDIRECT("$D$2:$D$"&$F$3),"<="&D2)+ISTEXT(D2)*COUNT(INDIRECT("$D$2:$D$"&$F$3)) 

用一些testing数据显示三种不同转换的结果比较容易:

(0)没有转换 – 只需使用COUNTIF

 =COUNTIF(D$2:D$7,"<="&D2) 

“999”<“abc”<“def”,999 <1000

(1)把所有东西都算作文本

 =SUMPRODUCT(--(D$2:D$7&""<=D2&"")) 

“1000”< “999”

(2)计算文字前的数字

 =COUNTIF(D$2:D$7,"<="&D2)+ISTEXT(D2)*COUNT(D$2:D$7) 

999 <1000 < “999”

(3)将所有数据统计为文本,但将数字转换为前导零

 =SUMPRODUCT(--(TEXT(D$2:D$7,"000000")<=TEXT(D2,"000000"))) 

“000999”=“000999”,“000999”<“001000”

在这里输入图像描述