将A列复制到B列而没有空白并排序的公式?

时间:2017-04-28 13:09:14

标签: excel sorting

我有以下专栏A

C
R

H


Z

T

我想要一个自动将数据从A复制到B的公式,以便数据没有空元素并且已经排序。

B应如下所示:

C
H
R
T
Z

之后,如果我要将F这样的元素添加到列A,例如:

C
R

H


Z
F
T

A会自动更新为:

C
F
H
R
T
Z

如何使用公式(非VBA代码)完成此操作?我希望它自动发生(意味着我不必继续过滤,每次将新的数据添加到列A时进行排序)

由于

3 个答案:

答案 0 :(得分:1)

您需要创建一个辅助列,使用此数组公式:

=SUMPRODUCT(IFERROR(CODE(UPPER(MID(A1,ROW(INDIRECT("1:"& MAX(LEN($A$1:$A$9)))),1))),10)*100^(MAX(LEN($A$1:$A$9))-ROW(INDIRECT("1:"& MAX(LEN($A$1:$A$9))))))

作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。如果操作正确,则Excel会将{}放在公式周围。

enter image description here

然后您将使用此公式进行排序和过滤:

=IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($B$1:$B$9)/((AGGREGATE(15,6,$B$1:$B$9/($A$1:$A$9<>""),ROW(1:1))=$B$1:$B$9)*($A$1:$A$9<>"")),1)),"")

enter image description here

请注意,这可能会因大字符串而崩溃。

答案 1 :(得分:0)

您可以使用此数组公式并将其向下拖动,A1是A列中的第一个数据,在B1写辅助列中对值进行排序:
=IF(COUNTIF($A$1:$A$21,"<="&A1)>0,COUNTIF($A$1:$A$21,"<="&A1),999999999)
并将其拖下来

在C1中写=IF(INDEX(A:A,MATCH(SMALL(IF(B:B<>0,B:B,999999999),ROW(A1)),B:B,0))=0,"",INDEX(A:A,MATCH(SMALL(IF(B:B<>0,B:B,999999999),ROW(A1)),B:B,0)))

同时按 Ctrl + Shift + 输入 IF将检查非空单元格并返回相应的行
Small将找到上部非空单元格并随行移动,在row1中为Small(,1)
在row10小(,10)
INDEX(A:A)是您的初始列
如果A中的单元格为空,则IFERROR将返回&#34;&#34;列B中为空 即使A中有空单元格,也必须向下拖动公式,在这种情况下,当您在单元格中写入公式将在B列中自动填充时 9999999它不会影响小功能
如果没有辅助列,您将需要对数据进行排序或使用未排序但删除空白
您可以在B1中使用:
=IFERROR(INDEX(A:A,SMALL(IF(A:A<>"",ROW(A:A),999999999),ROW(A1))),"")
还有数组公式
同时按 Ctrl + Shift + 输入 并将其拖下来

答案 2 :(得分:0)

假设您的列仅包含single characters的另一个想法, enter image description here

column B中的公式,

=IFERROR(CODE(A:A),"")

column C中的公式,

=IFERROR(CHAR(SMALL(B:B,ROW())),"")

当您输入公式时,不应该逐个单元格或拖动它。选择整个列,将公式粘贴到公式框中,然后按CTRL + ENTER。这将应用该列中所有单元格的公式。