在2个工作表

时间:2015-06-03 21:06:09

标签: excel vba excel-vba search

我有2个工作表(工作表1和工作表2)。我正在尝试搜索工作表1中的A列中的字符,并查看工作表2上的列A中是否存在这些字符。请注意,这些字符不是固定的,因此可以添加,删除或更改字符。如果它们存在于工作表2中,那么我会将工作表1中的字符加粗到相应的单元格。

工作表1

A栏

Jack
James
Peter
Angel

工作表2

A栏

Jack ate an apple.
Peter flies a kite.
Henry wakes up for work.
James went to school.

到目前为止,我的方法是使用For循环和if-else语句。我正在考虑使用InStr来查找工作表2中这些句子中的字符。

Dim StartNum As Integer
Dim EndNum As Integer
Dim rng1 As Range
Dim rng2 As Range

EndNum =

For StartNum = 1 To EndNum
    If rng1.Value = InStr(rng2.Value) Then _
        rng1.font.Bold = True
End If

2 个答案:

答案 0 :(得分:0)

选择工作表1上的所有A列,其中A1为活动单元格。选择主页►条件格式►新规则*,当出现**新格式规则*对话框时,选择使用公式确定要格式化的单元格然后在格式值中提供以下内容这个公式是真的:文本框。

 =isnumber(match("*"&A1&"*", 'Worksheet 2'!A:A, 0))

单击格式并从字体选项卡中选择粗体。单击确定一次接受格式,然后再次确定以创建新规则。

我在工作表1 中添加了一些不匹配的名称,并为这些结果添加了粗体蓝色字体的格式更改。

cONDITIONAL fORMATTING WITH tEXT WITHIN tEXT

答案 1 :(得分:0)

一个简单的宏可以为你完成工作。假设您有一个名为Sheet的表和另一个带有Sentences的表。所以这是一个小代码:

Sub HighlightFound()
Dim searchRange As Range
Set searchRange = ActiveWorkbook.Sheets("Sentences").Range("A:A")

ActiveWorkbook.Sheets("Names").Activate
Range("A1").Select

Do While Not IsEmpty(ActiveCell)
    If Not searchRange.Find(ActiveCell.FormulaR1C1, LookIn:=xlValues) Is Nothing Then
        ActiveCell.Font.Bold = True
    End If
    ActiveCell.Offset(RowOffset:=1).Select
Loop

End Sub

快乐的VBA编码!!!