Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将A列复制到B列(不带空格)并排序的公式?_Excel_Sorting - Fatal编程技术网

Excel 将A列复制到B列(不带空格)并排序的公式?

Excel 将A列复制到B列(不带空格)并排序的公式?,excel,sorting,Excel,Sorting,我有以下专栏,A C R H Z T 我想要一个公式,可以自动将数据从a复制到B,这样数据就没有空元素,并且可以进行排序 列B应如下所示: C H R T Z 在此之后,如果我要在列A中添加一个元素,如F,例如: C R H Z F T 列A将自动更新为: C F H R T Z 如何使用公式(非VBA代码)实现这一点?我希望它能自动发生(这意味着我不必每次向列a添加新数据时都进行筛选、排序) 谢谢您需要使用以下数组公式创建一个helper列: =SUMPRODUCT(IF

我有以下专栏,
A

C
R

H


Z

T
我想要一个公式,可以自动将数据从
a
复制到
B
,这样数据就没有空元素,并且可以进行排序

B
应如下所示:

C
H
R
T
Z
在此之后,如果我要在列
A
中添加一个元素,如
F
,例如:

C
R

H


Z
F
T
A
将自动更新为:

C
F
H
R
T
Z
如何使用公式(非VBA代码)实现这一点?我希望它能自动发生(这意味着我不必每次向列
a
添加新数据时都进行筛选、排序)


谢谢

您需要使用以下数组公式创建一个helper列:

=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将在公式周围放置
{}

然后使用此公式进行排序和筛选:

=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)),"")
=IFERROR(索引(A:A,总计(15,6行($B$1:$B$9)/((总计(15,6,$B$1:$B$9/($A$1:$A$9”),行(1:1))=$B$1:$B$9)*($A$1:$A$9“),”)



请注意,这可能会因大字符串而内爆。

您可以使用此数组公式并将其向下拖动,即B1 write helper列A列中的第一个数据,以对值进行排序:

=IF(COUNTIF($A$1:$A$21),假设您的列只包含
单个字符,这是另一个想法,

B列
中的公式

=IFERROR(代码(A:A),”)

C列
中的公式

=IFERROR(字符(小(B:B,ROW()),“”)


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

要使用公式,需要一个辅助列。@ScottCraner这完全可以。即使使用辅助列,我也会怎么做?哇,这个公式太疯狂了。我想看看是否有更简单的方法,但你能解释一下你在这些公式中到底在做什么吗?@Hatefind第一个将字母转换为数字。它逐字符地根据每个字母的代码创建一个数字。然后第二个使用该代码排序和筛选。聚合正在执行一个小的(IF())。我希望您能找到一种更简单的方法,但我对此表示怀疑,如果字符串始终是单字符,那么它将更容易,并且不需要helper列,但我假设该示例过于简化。因此,聚合是将数值从低到高排序的方法吗?是的,这是一种使用小公式的方法,条件是不需要e需要使用Ctrl-Shift-Enter。啊,对于聚合的最后一个参数,您使用
的意思是……给我取最小的第一个,最小的第二个,等等?