Excel 是否将单元格数据与不同的工作簿数据进行比较?

Excel 是否将单元格数据与不同的工作簿数据进行比较?,excel,vba,Excel,Vba,VBA中是否有方法查看外部工作簿是否包含来自其他工作簿的值? 基本上,我有一个工作簿,其中有一个宏按钮。其中,一旦按下按钮,它将从特定单元格A2中获取电子邮件地址。我需要的是宏,以便能够从单元格A2获取数据输入,并确定其他工作簿是否也包含该电子邮件。我不想硬编码到VBA的电子邮件,因为这个宏功能工作簿是一个模板,将不断输入不同的电子邮件。因此,此宏功能需要检查此外部工作簿,以查看输入的电子邮件是否包含在该工作簿中。 我曾尝试在网上查找资源,但不断出现编译器错误。所以我不知道我做错了什么。我目前拥

VBA中是否有方法查看外部工作簿是否包含来自其他工作簿的值? 基本上,我有一个工作簿,其中有一个宏按钮。其中,一旦按下按钮,它将从特定单元格A2中获取电子邮件地址。我需要的是宏,以便能够从单元格A2获取数据输入,并确定其他工作簿是否也包含该电子邮件。我不想硬编码到VBA的电子邮件,因为这个宏功能工作簿是一个模板,将不断输入不同的电子邮件。因此,此宏功能需要检查此外部工作簿,以查看输入的电子邮件是否包含在该工作簿中。 我曾尝试在网上查找资源,但不断出现编译器错误。所以我不知道我做错了什么。我目前拥有的代码非常基本,但我认为,从一开始,这基本上是第一步:

Dim workbookExternal As Workbook
Dim cellValue As Integer
Set workbookExternal = Workbooks.Open(path name to excel wb)
Dim worksheetExternal As Worksheet
Set worksheetExternal = workbookExternal.Worksheets("Client_Data")
Dim strEmailRecipient As String
Dim emailValue As String
emailValue = Range("A2") ' Cell where the email is being placed


 If InStr(worksheetExternal.Range("A1:AA100"), emailValue) = emailValue Then ' determining if external 
 ' workbook range contains the email value thats equal to the data stored in A2 of this workbook
 MsgBox ("Success")
 Else
 MsgBox ("Error")
 End If
这就像现在一样是一个基本结构,用于确定代码是否正确执行


任何帮助都将不胜感激

检查的方法有很多

例如:

If application.worksheetfunction.countif(worksheetExternal.Range("A1:AA100"), emailValue) >0 then 
'your code here

end if

这是
范围的一个很好的例子。查找

Dim foundRng as Range
Set foundRng = worksheetExternal.Range("A1:AA100").Find(What:=emailValue, _
                   LookIn:=xlValues, LookAt:=xlPart)

If Not foundRng Is Nothing Then ' test if the Find was successful
     MsgBox "Email is at location: " & foundRng.Address(False, False)
Else
     MsgBox "Email not found."
End If

使用
范围。查找
。您不能在那样的多单元范围内使用
InStr
。这很好!我唯一的另一个问题是,如果碰巧知道,我将使用什么函数来查找特定变量的单元格位置?因此,一旦用户输入电子邮件,它就会扫描另一个文档,查看该电子邮件是否存储在其中。我能弄明白。现在,我如何才能显示此电子邮件的单元格位置?因此,如果电子邮件是:example@email.om“而该电子邮件存储在单元格G6的另一个Excel文件中,我如何才能在消息框中显示:“电子邮件位于位置:G6”?使用ActiveCell.Address不起作用
Range.Find
返回找到值的
范围。然后您可以只使用该范围的
.Address
。那么,如果变量名为emailValue,那么它将是MsgBox(emailValue.range.Address)?我不断收到一个声明无效限定符的错误,请参阅我发布的答案。太棒了!非常感谢你!最后一个问题,我真的很感谢你的帮助。所以,我已经找到了那个电子邮件地址的位置。“我的工作簿”设置为跨行显示客户信息的位置。客户x的电子邮件在A13上,客户y的电子邮件在B13上。是否有一种方法可以在找到单元格后,添加某个数字以在不同的列中找到不同的数据集。那么,如果邮件在A13,我可以把变量的位置加上,比如说2,然后把位置放在A15吗?或者我必须使用Range.Find方法吗?当然可以。你可以用这个。非常感谢。这对我帮助很大!