我试图做一个公式,增加数字和字母之间的空格,但它不工作,有些字符串它增加了空格,而其他人没有。有谁能帮我解释一下我错在哪里,看到其中一些额外的可能是格式?或者是否有任何方法可以使用VBA用户定义的函数来获得预期的结果我现在的公式:
=TRIM(REPLACE(B3;MAX(IFERROR(FIND({0;1;2;3;4;5;6;7;8;9};B3;ROW(INDIRECT("1:"&LEN(B3))));0))+1;0;" "))
编辑:数字不会总是伴随着A和B,它可以是从A到Z的任何字母
imzjd6km1#
使用Office 365动态阵列:
=REDUCE("",MID(B3,SEQUENCE(LEN(B3)),1),LAMBDA(a,b,IF(AND(ISNUMBER(--a),ISERROR(--b)),a&" "&b,a&b)))
注意:这假设文本总是按数字顺序排列,然后是字母。
注:对于旧版本,OP在其问题中使用的公式有效。退出编辑模式时,只需使用Ctrl-Shift-Enter而不是Enter进行确认:
Ctrl
Shift
Enter
rsl1atfo2#
假设
此公式检测数字部分的最大值,然后将其拆分。
=MAX(IFERROR(--MID(A1,1,{1,2,3,4,5}),0)) & SUBSTITUTE(A1,MAX(IFERROR(--MID(A1,1,{1,2,3,4,5}),0))," ")
如果第一个数字可能是零(0),您可以使用这个较长的公式来检测第一个字母的位置。
=LEFT(A1,MAX(IFERROR(SEARCH({"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";"Q";"R";"S";"T";"U";"V";"W";"X";"Y";"Z"},A1),0))-1) & " " & MID(A1,MAX(IFERROR(SEARCH({"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";"Q";"R";"S";"T";"U";"V";"W";"X";"Y";"Z"},A1),0)),LEN(A1))
kxkpmulp3#
假设是O365。它溢出整个数组,无需向下拖动公式:
=LET(in,A1:A3, after,TEXTAFTER(in,CHAR(ROW(48:57)),-1), before,SUBSTITUTE(in,after,""), before &" "& after)
下面是输出:
after获取最后一个数字后的子字符串(-1,反向搜索),before,带数字的子字符串,然后只是为了连接两个数组,在中间添加一个空格。CHAR(ROW(48:57))表示要查找的所有数字:0-9,但您可以用途:SEQUENCE(10,,0)用于相同的目的。
after
-1
before
CHAR(ROW(48:57))
0-9
SEQUENCE(10,,0)
t3irkdon4#
=LET(a,A1, x,XMATCH(1,--ISERROR(--(MID(a,SEQUENCE(LEN(a)),1)))), LEFT(a,x-1)&" "&MID(a,x,LEN(a)))
其中a是要在数字和文本之间添加空格字符的单元格。x查找第一个字符错误,如果字符被转换为数字字符的字符。(将字符转换为数字会引发错误)然后,找到的位置之前的单元格字符后面是" "和其余字符。编辑:我读到你没有序列和减少,所以这将在旧的Excel工作:
a
x
" "
=LEFT(A1, MATCH(1, --ISERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),1)), 0) -1) &" "& MID(A1, MATCH(1, --ISERROR(--MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),1)),0), LEN(A1))
我认为它需要输入ctrl+shift+enterPS,你自己的公式似乎是这样工作的。确保还使用ctrl+shift+enter
ctrl+shift+enter
4条答案
按热度按时间imzjd6km1#
使用Office 365动态阵列:
注意:这假设文本总是按数字顺序排列,然后是字母。
注:对于旧版本,OP在其问题中使用的公式有效。退出编辑模式时,只需使用
Ctrl
-Shift
-Enter
而不是Enter
进行确认:rsl1atfo2#
假设
此公式检测数字部分的最大值,然后将其拆分。
如果第一个数字可能是零(0),您可以使用这个较长的公式来检测第一个字母的位置。
kxkpmulp3#
假设是O365。它溢出整个数组,无需向下拖动公式:
下面是输出:
after
获取最后一个数字后的子字符串(-1
,反向搜索),before
,带数字的子字符串,然后只是为了连接两个数组,在中间添加一个空格。CHAR(ROW(48:57))
表示要查找的所有数字:0-9
,但您可以用途:SEQUENCE(10,,0)
用于相同的目的。t3irkdon4#
其中
a
是要在数字和文本之间添加空格字符的单元格。x
查找第一个字符错误,如果字符被转换为数字字符的字符。(将字符转换为数字会引发错误)然后,找到的位置之前的单元格字符后面是
" "
和其余字符。编辑:我读到你没有序列和减少,所以这将在旧的Excel工作:
我认为它需要输入
ctrl+shift+enter
PS,你自己的公式似乎是这样工作的。确保还使用
ctrl+shift+enter