2016-03-08 5 views
0

В первых двух листах моей книги каждая содержит столбец A приблизительно 2000 значений , В дополнение к этим двум листам у меня есть 42 других листа, каждый из которых содержит от 20 до 1500 значений, также в одной колонке A.Проверьте, существует ли значение ячейки excel на нескольких других листах, и если это так, верните имя листа, в котором он существует, в другом столбце

Для каждого значения ~ 2000 в столбце A листов 1 и 2 я пытаюсь чтобы проверить, существуют ли эти значения в любом из 42 листов. Если да, то я хотел бы, чтобы имя листа они существуют, чтобы показать в колонке Б.

Итак:

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 

и т.д ...

ответ

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 
0

Используйте для каждого цикл в коллекции рабочих листов для циклического перемещения по рабочим листам. Затем используйте метод Range.Find, чтобы проверить, найдена ли ячейка на листе. Если это так, просто напишите имя листа на обложке. Вы можете объединить одну ячейку или использовать счетчик для перехода к следующему доступному столбцу.