使用VBA或Excel公式在Excel单元格中搜索部分字符串

时间:2016-07-18 09:32:00

标签: excel vba excel-vba excel-formula

我有一个带有列模板和模板名称的Excel工作表,我必须在模板列中填入模板名称列中的部分字符串:

    Template                                 Template Name
    This is String  
    String line contains data
    This is Int 
    Int line contain data    
    int: in the String data
    string: in the int data 
    Int: is empty or no string 

我尝试了以下公式,但它给出了不同的结果:

     =IF(ISNUMBER(SEARCH("string",A2)),"string",IF(ISNUMBER(SEARCH("int",A2)),"int",IF(ISNUMBER(SEARCH("int:",A2)),"int",IF(ISNUMBER(SEARCH("string:",A2)),"string"))))

B栏中公式给出的输出:

    Template                         Template Name
    This is String                       String
    String line contains data            string
    This is Int                          int
    Int line contain data                int 
    int: in the String data              string    #it must be 'int'
    string: in the int data              int       #it must be 'string'
    Int: is empty or no string           string    #it must be 'int'

请让我知道必须更改哪些内容才能获得所需的输出。

2 个答案:

答案 0 :(得分:1)

重新排列搜索顺序: 如果您首先搜索较长的字符串(使用':'),然后搜索没有':'的字符串,则结果应该是正确的。

=IF(ISNUMBER(SEARCH("string:",A2)),"string",IF(ISNUMBER(SEARCH("int:",A2)),"int",IF(ISNUMBER(SEARCH("int",A2)),"int",IF(ISNUMBER(SEARCH("string",A2)),"string"))))

答案 1 :(得分:0)

已编辑:使代码适合直接输入电子表格单元格(我之前想过的是VBA宏)

如果您希望第一次出现在“string”和“int”之间,请使用

=IF(IFERROR(SEARCH("int",RC1),10000)>IFERROR(SEARCH("string",RC1),10000),"String", "Int")"

如果您处理字符串中既没有“string”也没有“int”的情况,那么只需检查其中任何一个的出现