在excel中在数字和字母之间添加空格

zqry0prt  于 2023-05-23  发布在  其他
关注(0)|答案(4)|浏览(281)

我试图做一个公式,增加数字和字母之间的空格,但它不工作,有些字符串它增加了空格,而其他人没有。有谁能帮我解释一下我错在哪里,看到其中一些额外的可能是格式?或者是否有任何方法可以使用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的任何字母

imzjd6km

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进行确认:

rsl1atfo

rsl1atfo2#

假设

  • 数字序列优先
  • 没有以零(0)开头的数字序列
  • 数字序列中不超过5位
  • (如果超过5个,则调整数组常量)

此公式检测数字部分的最大值,然后将其拆分。

=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))

kxkpmulp

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)用于相同的目的。

t3irkdon

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工作:

=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+enter
PS,你自己的公式似乎是这样工作的。确保还使用ctrl+shift+enter

相关问题