检查多个其他工作表是否存在Excel单元格值,如果是,则返回另一列中工作表的名称

我的工作手册的前两页分别包含大约2000个值的单列A列。 除了这两张纸之外,我还有42张其他的纸张,每张纸张都包含20-1500个值,也是在一个单列中。

对于表1和表2列A中的〜2000个值中的每一个,我试图检查这些值是否存在于其他42张表中的任何一张中。 如果是这样,我想要他们存在的工作表的名称显示在B列。

所以:

IF sheet1.A1.value EXISTS IN sheet3.A:A RETURN sheet3.name ELSE IF sheet1.A1.value EXISTS IN sheet4.A:A RETURN sheet4.name 

等等…

 Sub test() Dim ws As Worksheet Dim i As Integer Dim fRange As Range 'Perform search for Sheet1 Set ws = Sheets("Sheet1") i = 3 While i <= ActiveWorkbook.Sheets.Count ws.Select Set fRange = Range("A1") fRange.Select While fRange.Value <> "" Sheets(i).Select Range("A1").Select While ActiveCell.Value <> "" If ActiveCell.Value = fRange.Value Then fRange.Offset(0, 1).Value = Sheets(i).Name ActiveCell.Offset(1, 0).Select Else ActiveCell.Offset(1, 0).Select End If Wend Set fRange = fRange.Offset(1, 0) Wend i = i + 1 Wend 'Perform search for Sheet2 Set ws = Sheets("Sheet2") i = 3 While i <= ActiveWorkbook.Sheets.Count ws.Select Set fRange = Range("A1") fRange.Select While fRange.Value <> "" Sheets(i).Select Range("A1").Select While ActiveCell.Value <> "" If ActiveCell.Value = fRange.Value Then fRange.Offset(0, 1).Value = Sheets(i).Name ActiveCell.Offset(1, 0).Select Else ActiveCell.Offset(1, 0).Select End If Wend Set fRange = fRange.Offset(1, 0) Wend i = i + 1 Wend End Sub 

使用工作表集合上的For Each循环来遍历工作表。 然后使用Range.Find方法检查是否在工作表上find该单元格。 如果是这样,只需将表格名称写入封面。 您可以连接到一个单元格,或使用计数器移动到下一个可用列。