无需 6 个助手即可将输入替换为另一个输入

Replace input with another one without the need of 6 helpers

任何人都可以对以下内容有所了解:我能够得到预期的结果,但我需要 6 个帮手,这太多了:

电子表格here

所以我有例如以下输入:21-FI-3040506.High,所需的输出将是:21-FAH-3040506

为此,我使用了 6 个助手:

First: 提取点后的内容 =INDEX(SPLIT(A2, "."), , 2)

Second:提取第二个破折号和点之间的内容(大多数时候是 7 位数字,但在少数情况下它后面跟一个字母,如 3040570A) =INDEX(SPLIT(INDEX(SPLIT(A2, "."), , 1),"-"), , 3)

第三:第二个助手的条件:=IF(B2="High","AH",If(B2="HighHigh","AHH",IF(B2="Low","AL",If(B2="LowLow","ALL","A"))))

第四步: 提取两个破折号之间的内容 =INDEX(SPLIT(A2, "-"), , 2)

Fifth:有条件替补3号帮手 =IF(D2="A",SUBSTITUTE(E2,"I","T"), SUBSTITUTE(E2,"I",D2))

第六: 提取第一个破折号前的数字 =INDEX(SPLIT(A2, "-"), , 1)

然后我会连接不同的结果以获得所需的结果。 =IF(D2="A",CONCATENATE(G2,"-",F2,"-",C2,".",B2),CONCATENATE(G2,"-",F2,"-",C2))

谁能帮我简化任务,非常感谢

使用:

=ARRAYFORMULA(IFERROR(IF(
 REGEXMATCH(A2:A, "Fail"), 
 REGEXREPLACE(A2:A, "I-", "T-"),
 REGEXEXTRACT(A2:A, "\d+")&"-"&
 REGEXEXTRACT(A2:A, "\d+-(.+)I-")&"A"&
 REGEXREPLACE(REGEXEXTRACT(A2:A, "\.(.+)"), "[a-z]+", )&"-"&
 REGEXEXTRACT(A2:A, "-(\d+.?|\d+-\d+)\."))))