有粉丝问了这样的问题,单元格字符串有中文汉字、英文字母、数字,需要把数字和非数字的位置调换,即图1变为图2,如果数字在单元格右边,就把数字调换到单元格左边,如果数字在单元格左边,就把数字调换到单元格右边。 我给粉丝提供了3种方法, 方法一:用word正则表达式查找替换,分离数字和非数字字符,再用&连接。 把Excel单元格内容复制粘贴到word, 用图3的查找替换就可以把数字字符替换为空,剩下的就是非数字字符。C1单元格公式=SUBSTITUTE(A1,B1,)提取非数字字符,再D1公式=ISNUMBER(--LEFT(A1,1))判断A列的单元格内容是以数字开头还是非数字开头,公式中的“--”作用就是将不能参与计算的字符转换为可以计算的数字,从而使公式正常运行,这里是将文本数字转换为数字格式,因为left返回的数字是文本数字。 E1公式=IF(D1,B1&C1,C1&B1),得到想要的结果。 方法二:用数组公式提取字符串中的数字,再用方法一的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: 操作步骤如下: Step1:把A列每个字符拆分多列,如图9: 图 9 Step2:求出每个字符的ASCII码,如图10: 图 10 Step3:找出ASCII码对应数字0-9的字符,如图11: Step4:变为文本数字后再用PHONETIC函数连接起来,如图12: 文本合并函数——Concatenate函数、&、Phonetic函数、Concat函数、Textjoin函数 以上方法都需要花时间去写公式,需要具备一定的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函数将处理后的字符连接成一个字符串。 这样,你就可以得到一个数字和非数字字符互换位置的字符串。
|
|
来自: sunnynie2021 > 《待分类》