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

时间:2015-07-29 12:26:16

标签: excel vba excel-vba

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

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

寻求所有VBA大师的帮助。

1 个答案:

答案 0 :(得分:1)

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

条件格式设置通过应用第二个公式'到给定的细胞。如果'第二个公式'结果为TRUE,然后可以应用特殊的格式化条件。

示例条件格式化

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

=$A1="hello world"

如果该行A列中的单元格完全等于" hello world"这将只会导致TRUE。 [注意,A列有一个绝对引用$,而第1行没有,所以第1行是相对于条件格式规则中单元格的位置]。

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

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

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

搜索多个栏目

现在,要查看是否有任何列,例如来自AD,包含" 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,""))

正如您所看到的那样,我们实际上已经使用数组公式而不是内置的SUMIF创建了我们自己的SUMIF函数。

使用阵列公式搜索多个条款

所以现在我们将这些原则应用于条件格式,以创建一个数组公式,该公式将检查我们连接的' NEW STRING'对于任何数量的提供的术语,如下所示[假设搜索项被输入到单元格E1:E10中]:

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

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