0

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

对于表 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

ETC...

4

2 回答 2

1
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
于 2016-03-08T16:54:12.080 回答
0

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

于 2016-03-08T18:53:22.310 回答