0

ワークブックの最初の 2 枚のシートにはそれぞれ、約 2000 個の値の単一の列 (列 A) が含まれています。これらの 2 つのシートに加えて、それぞれが 20 ~ 1500 の値を含む 42 のシートがあり、これも単一の列 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

等...

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 メソッドを使用して、セルがワークシートにあるかどうかを確認します。その場合は、表紙にシート名を書き込んでください。1 つのセルに連結するか、カウンターを使用して次の使用可能な列に移動できます。

于 2016-03-08T18:53:22.310 に答える