首页 文章

excel中的VBA脚本可以查找和突出显示文本

提问于
浏览
-2

我正在寻找一个VBA脚本,它将帮助我在单元格中找到某些关键字,如果找到则突出显示整行 . 以下是我的要求:

我有一个单词数据库,例如地狱,出去,闭嘴,你不敢等 . 我需要一个宏来搜索excel列“E”中的数据,以防“E”列中的任何单元格包含数据库中列出的任何单词(无论单词upper或lower的情况如何)都会突出显示整行 . 单词可以位于单元格的开头,中间或末尾,宏应该能够找到该单词并突出显示该列 .

寻求所有VBA大师的帮助 .

1 回答

  • 1

    您可以使用条件格式而不是VBA来执行此操作 .

    条件格式化通过将“第二个公式”应用于给定单元格来实现 . 如果“第二个公式”结果为TRUE,则可以应用特殊格式条件 .

    EXAMPLE CONDITIONAL FORMATTING

    例如,如果您有一列数据,A:A,并且您想要检查该列是否具有确切的字符串“hello world”,则可以添加条件格式[Home ribbon,Styles section,Conditional Formatting]使用以下公式将单元格变为黄色:

    =$A1="hello world"
    

    如果该行中A列中的单元格恰好等于“hello world”,则此结果仅为TRUE [注意,A列具有绝对引用$,而行1不具有,因此第1行相对于单元格的位置在条件格式规则] .

    要检查A列中的任何行是否包含hellow world,我们需要添加一个SEARCH函数,该函数检查一个较小的搜索字符串是否在较大的字符串中:

    =SEARCH("hello world",$A1)>0
    

    因为SEARCH默认返回与搜索词匹配的较大字符串中的第一个字符(如果它什么都没找到,则返回#N / A),我们检查在A列中搜索“hello world”是否返回一个数字 .

    SEARCHING MULTIPLE COLUMNS

    现在,为了查看AY中的任何列是否包含"hello world",我们连接每列的每个值,以便它为我们提供单个字符串,我们可以搜索"hello world",如下所示:

    =SEARCH("hello world",$A1&$B1&$C1&$D1)>0
    

    这将首先创建一个单独的字符串,连续等于A1和B1&C1和D1 . 然后它将搜索新创建的字符串以查看其中是否包含“hello world”,如果是,则返回一个数字值 .

    ARRAY FORMULA BASICS

    最后,我们需要做一些棘手的部分 - 搜索多个术语而不仅仅是“hello world” . 这称为数组公式 . 数组公式通过对多个单元格执行单个操作,然后在Array中返回多个结果来工作 . 在Excel工作表中,必须使用CTRL SHIFT ENTER(而不仅仅是ENTER)确认数组公式,但在条件格式中,您实际上不需要执行任何特殊操作 - 它将识别没有特殊命令的数组公式 .

    作为条件格式的示例,请参阅此示例,该示例检查A1:A5 = 10中是否有任何值,如果是,则它给出了B1:B5中的值:

    =IF(A1:A5=10,B1:B5,"")
    

    请记住在工作表上的Excel中,按CTRL SHIFT ENTER确认 . 如果你测试这个,它将给你以下结果,假设A2 = 10和A5 = 10:

    ={"";B2;"";"";B5}
    

    这个结果实际上是隐藏的,因为Excel不能自己“折叠”数组函数 . 因此,假设列B具有值,我们实际上想要将它们相加 . 然后我们将数组公式包装在SUM函数中:

    =SUM(IF(A1:A5=10,B1:B5,""))
    

    正如您所看到的,如果您对此进行测试,我们实际上已经使用Array公式而不是内置SUMIF创建了我们自己的SUMIF函数 .

    SEARCHING FOR MULTIPLE TERMS WITH ARRAY FORMULAS

    所以现在我们将这些原则应用于条件格式,以创建一个数组公式,该公式将检查我们连接的“NEW STRING”是否包含任意数量的条件,如下所示[假设搜索项被输入单元格E1:E10]:

    =SUM(SEARCH($E$1:$E$10,$A1&$B1&$C1&$D1)>0)
    

    此公式可以作为条件格式规则放置,该规则到达所有A:D . 将规则设置为以您喜欢的任何方式突出显示/更改格式 .

相关问题