EXCEL - 用括号将可变值字符串括在一个较大的字符串中,所有值都包含在单个单元格中

问题描述 投票:0回答:1

我的单元格包含!后跟长度不同的字母数字字符串。

我想改变!到 NOT( 这相对容易,我遇到的问题是字母数字字符串后面的右括号

!AlphaNumericString 变为 NOT(AlphaNumericString)

更改前的单元格示例,
与(!BI,OR(Z1,Z2,Z102,Z103,Z104,Z306))

!L1M23 或(NP001 和 !CA);
Z200 和 !VP100;
!N001L010D132

我希望这些细胞成为,
与(非(BI),或(Z1,Z2,Z102,Z103,Z104,Z306))

非(L1M23) 或(NP001 和 非(CA));
Z200 和 非 (VP100);
不是(N001L010D132)

感叹号后面始终跟有 1 个字符,那么它将是一系列字母数字字符,并且感叹号字符串始终以以下之一结尾

空间
)
;
,
或者它可以以单元格中的最后一个字符结束,

按照上面的例子

希望这是有道理的。

我更喜欢宏,这样它就可以从 EXCEL 365 向后兼容到 2010 年,但如果有简单的公式,那就太棒了。

谢谢 姆巴特67

excel vba excel-formula excel-2010
1个回答
0
投票

但是如果有简单的公式,那就太棒了

并非如此,但在 Office 365 中我们可以组合公式来获得您想要的结果:

=MAP(A1:A2, 
 LAMBDA(a,
     REDUCE(a,SEQUENCE(MAX(LEN(a)-LEN(SUBSTITUTE(a,"!",)))),
     LAMBDA(r,_,
LET(x,MID(r,FIND("!",r),LEN(r)),
    y,TOROW(HSTACK(FIND({" ","(",";",","},x),LEN(x)+1),2),
IFERROR(
        SUBSTITUTE(
                   REPLACE(r,
                           MIN(y+FIND("!",r)-1),
                           ,
                           ")"),
                   "!",
                   "NOT(",
                   1),
        r))))))
© www.soinside.com 2019 - 2024. All rights reserved.