有粉丝问了这样的问题,单元格字符串有中文汉字、英文字母、数字,需要把数字和非数字的位置调换,即图1变为图2,如果数字在单元格右边,就把数字调换到单元格左边,如果数字在单元格左边,就把数字调换到单元格右边。
我给粉丝提供了3种方法,
方法一:用word正则表达式查找替换,分离数字和非数字字符,再用&连接。
图 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的是数字字符。
数字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函数将处理后的字符连接成一个字符串。
这样,你就可以得到一个数字和非数字字符互换位置的字符串。
关注我,让你少走弯路。
欢迎excel爱好者加入我的知识星球——Excel解惑释疑,sunny姐为你解决Excel、SQL、Tableau难题。
视频号:sunny姐教你学excel
欢迎中医爱好者加入我的知识星球——美骐中医调养堂,sunny姐为你分享中医知识,为你的健康保驾护航。
作者聂美骐,原名聂春霞,微信号sunnynie,爱好针灸、易经,2001年-2005年在江西移动工作,2005年2月-2024年2月在鹅厂工作19年,兼职腾讯内部Excel课程讲师,2015年4月出版图书《Excel高手捷径:一招鲜,吃遍天》,同年12月在台湾出版繁体字版。2017年5月出版第二版《Excel职场手册:260招菜鸟变达人》。Excel交流QQ群:806295411,欢迎各位粉丝加入群交流。微信交流群已经满200人,如果需要入群请先加我的个人微信。