如果然后在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.")