如果然后在Excel中循环search

我正在做一个“如果然后”循环在Excel下面的逻辑。

值得检查

1. S9(7)C3
2. S9(11)V9(2)C3
3. X(3)

我用过的逻辑

=IF(ISNUMBER(SEARCH("S9",D1,1)),CONCATENATE("s370fpd",5,".","0"),CONCATENATE("$ebcdic",5,".")) 

现在问题在于, S9可能有两种types。 在第一个例如S9(7)C3中,它工作正常,但是对于第二个,即S9(11)V9(2)C3,我必须将“s370fpd”与V9的括号内的值连接,即2。 所以它会变成“s370fpd5.2”

由于括号内的值是dynamic的,因此逻辑必须在其内部进行search。 我不知道它将如何检查,然后追加它。

我不确定你想要做什么,但尽可能地保持你现在所做的,我会用这个:

 =IF(ISNUMBER(SEARCH("S9",D1,1)),CONCATENATE("s370fpd",5,".",IFERROR(MID(D1,SEARCH("V9",D1)+3,SEARCH(")",D1,SEARCH("V9",D1))-SEARCH("V9",D1)-3),"0")),CONCATENATE("$ebcdic",5,".")) 

我用"0"代替

 IFERROR(MID(D1,SEARCH("V9",D1)+3,SEARCH(")",D1,SEARCH("V9",D1))-SEARCH("V9",D1)-3),"0") 

这是V9之后的括号之间的内容。

在我看来,你可以把CONCATENATE("$ebcdic",5,".")变成"$ebcdic5." 直接和CONCATENATE("s370fpd",5,"."转化为CONCATENATE("s370fpd5." ,和/或使用&使事情稍微短一点,但是这仅仅取决于你的问题:

 =IF(ISNUMBER(SEARCH("S9",D1,1)),"s370fpd5."&IFERROR(MID(D1,SEARCH("V9",D1)+3,SEARCH(")",D1,SEARCH("V9",D1))-SEARCH("V9",D1)-3),"0"),"$ebcdic5.")