分享

怎样把字符串中的数字和非数字字符调换位置,AI工具腾讯混元助手一分钟帮你实现

 sunnynie2021 2024-03-10 发布于广东

有粉丝问了这样的问题,单元格字符串有中文汉字、英文字母、数字,需要把数字和非数字的位置调换,即图1变为图2,如果数字在单元格右边,就把数字调换到单元格左边,如果数字在单元格左边,就把数字调换到单元格右边。

我给粉丝提供了3种方法,

方法一:用word正则表达式查找替换,分离数字和非数字字符,再用&连接。

99.99%的人都不知道的查找替换功能

3

把Excel单元格内容复制粘贴到word, 用图3的查找替换就可以把数字字符替换为空,剩下的就是非数字字符。C1单元格公式=SUBSTITUTE(A1,B1,)提取非数字字符,再D1公式=ISNUMBER(--LEFT(A1,1))判断A列的单元格内容是以数字开头还是非数字开头,公式中的“--”作用就是将不能参与计算的字符转换为可以计算的数字,从而使公式正常运行,这里是将文本数字转换为数字格式,因为left返回的数字是文本数字。

E1公式=IF(D1,B1&C1,C1&B1),得到想要的结果。

4

5

6

方法二:用数组公式提取字符串中的数字,再用方法一的D和E列公式。

=LOOKUP(9E+307,--MID(A1,MATCH(1,MID(A1,ROW($1:$100),1)^0,0),ROW($1:$100)))

公式写完再Ctrl+Shift+Enter,三键同时按下。

7

方法三:提取字符串中的每一个字符,用code函数计算每个字符的ASCII码,ASCII码从48到57的是数字字符。

长相有点相似但功能完全相反的两个函数code和char

数字0-9对应的ASCII码如图8:

8

操作步骤如下:

Step1:把A列每个字符拆分多列,如图9:

9

Step2:求出每个字符的ASCII码,如图10:

10

Step3:找出ASCII码对应数字0-9的字符,如图11:

11

Step4:变为文本数字后再用PHONETIC函数连接起来,如图12:

文本合并函数——Concatenate函数、&、Phonetic函数、Concat函数、Textjoin函数

12

以上方法都需要花时间去写公式,需要具备一定的Excel基础,对于零基础的人怎么办呢?短时间内要解决问题,要学习公式与函数没有那么快,如果用AI工具腾讯混元助手,不到一分钟就可以解决问题,搜索微信小程序“腾讯混元助手”,看看混元助手给我的回复,如图13,既有解决方法,又有解释说明。

13

混元助手回复在手机端复制粘贴如下:

在Excel中,我们可以使用`MID`、`ISNUMBER`和`ROW`函数结合数组公式来实现这个需求。假设你的字符串位于单元格A1,你可以在另一个单元格中输入以下公式:

=TEXTJOIN("", TRUE, IF(ISNUMBER(--MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1)), MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1), ""), IF(ISNUMBER(--MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1))=FALSE, MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1), ""))

这个公式是一个数组公式,所以在输入完成后,你需要按Ctrl + Shift + Enter而不是仅按Enter键。

公式解释:

1. ROW(INDIRECT("1:" & LEN(A1)))`生成一个从1到字符串长度的数字序列。

2. MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1)`使用MID函数逐个提取字符串中的每个字符。

3. ISNUMBER(--MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1))`判断提取的字符是否为数字。

4. 使用IF函数,如果字符是数字,则保留原位;如果字符不是数字,则将其移至数字字符的位置。

5. 最后,使用TEXTJOIN函数将处理后的字符连接成一个字符串。

这样,你就可以得到一个数字和非数字字符互换位置的字符串。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多