【问题标题】:If Then Loop with Search in Excel如果然后在 Excel 中使用搜索循环
【发布时间】:2013-11-05 17:22:26
【问题描述】:

我目前正在使用以下逻辑在 excel 中执行“if then”循环。

要检查的值

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 可能有两种类型。在第一个即 S9(7) C3 它工作正常,但对于第二个,即 S9(11)V9(2) C3 我必须将“s370fpd”与 V9 括号内的值连接起来,在这种情况下为 2。所以会变成"s370fpd5.2"

由于括号内的值是动态的,因此逻辑必须在其中进行搜索。我不确定它将如何检查然后附加它。

【问题讨论】:

    标签: excel if-statement excel-2007 worksheet-function


    【解决方案1】:

    我不确定你到底想要做什么,但尽可能多地保留你现在拥有的东西,我会使用这个:

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

    【讨论】:

    • 杰瑞,非常优雅的解决方案。感谢您的技巧和知识。
    猜你喜欢
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多