Excel中如何给字符排序?多个随机英文字符要从小到大重新组合

Excel学习世界 2023-08-11 11:30:15

这是网友求助的一个问题,如果要将多列英文字母合并到同一个单元格中,如何让合并后的字母自动按从小到大的顺序排列?

也就是按 26 个字母的先后顺序自动重排一下。

彩蛋在案例 2,难度成几何级数上升,请务必看到最后。

案例 1:两列字母

将下图 1 中 A、B 列的字母合并后放在 D 列,合并后的字母组合必须按字母顺序从小到大排列。

效果如下图 2 所示。

解决方案 1:

1. 在 D2 单元格中输入以下公式 --> 向下拖动复制公式:

=IF(A1>B1,B1&A1,A1&B1)

公式释义:

如果 A1>B1,则先 B 后 A,反正则先 A 后 B;

* 没错,字母的先后顺序是可以用 if 函数来判断的。

案例 2:三列字母

如果变成三列,情况就要复杂得多。因为排列组合的可能性有 6 种,我们就不能再用 if 了,嵌套太多了。

这种情况就需要用判断大小的函数来替代。

解决方案 2:

但是又遇到了新问题,虽然 if 可以判断字母的大小,但是我们所知的计算大小的函数,却只能计算数值,而无法计算文本。

先试几种可以用的。

1. 我首先想到 min、max、median 这一套。在任意空单元格中输入以下公式:

=MIN(A2:C2)

结果为 0,无法判断文本大小。

2. 那再试试 small 和 large 函数。

=SMALL(A2:C2,1)

这次直接就出错了。

到这里是不是有点绝望?别灰心,有个 code 函数,可以计算出文本所对应的编号数值。如果先用 code 转换一下,不就能比较大小了吗?

试试 code 函数。

3. 在任意单元格输入以下公式 --> 向右拖动公式:

=CODE(A2)

成功!每个字母都有专属的数值编号。

最后一个问题,如果把字符都用 code 转换成数值,排大小以后,最后如何再显示回字母呢?

还有个函数叫 char,用它再把数值转换回字母呗。

下面是正解。

1. 在 E2 单元格中输入以下公式 --> 按 Ctrl+Shift+Enter --> 下拉复制公式:

=CHAR(MIN(CODE(A2:C2)))&CHAR(MEDIAN(CODE(A2:C2)))&CHAR(MAX(CODE(A2:C2)))

公式释义:

别看公式长,其实就是前面拆解的那些;

CODE(A2:C2):先用 code 将区域内的字符转换成编号值;

然后依次用 MIN、MEDIAN、MAX 提取出它们中从小到大的值;

在上述三个函数外面分别套上 char 函数,把编号再转换回字符;

最后用连接符号“&”连接起来;

数组公式,必须三键结束

0 阅读:9

Excel学习世界

简介:Excel 学习交流