遍历唯一数据集以在不同的工作表上返回匹配值

时间:2018-12-14 20:58:20

标签: arrays excel vba excel-vba for-loop

我搜索的内容与我要查询的内容相似,但是不幸的是,没有什么比我要找的东西更重要了。

我在Sheet(2)上有一个唯一的数据集:Data to Loop Through目的是如果突出显示的蓝色列中的值与下拉列表中所选框的“ Item#”相同,则返回该值Sheet(1)上的框名称的名称。请在此处查看工作表(1):Sheet(1) Set-Up

工作表(1)上的项目编号位于工作表(1)上的B3:B12中。 -我还添加了另一个我想运行我的代码的列表在此列旁边的空白处是蓝色的匹配项将在其中发布。

我正在尝试使用For循环来完成此任务。我知道数据集很奇怪,但是我想保留它只是为了挑战(也因为我有一个更大的相似数据集,并且只是将其用作测试运行)...我的代码远如下:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCells As Range
' In order to run code on sheet without a button or enabling in a module
Set KeyCells = Range("A1")

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

Dim i, j As Long
Dim n As Long
Dim box As String
Set sh2 = ThisWorkbook.Sheets(2)
Set rn2 = sh2.UsedRange

box = Sheets(1).Cells.Range("A1")

Dim k1 As Long
k1 = rn2.Rows.Count + rn2.Row - 1

n = 0

For i = 1 To k1
If Sheets(2).Cells(1, i) = box Then
    If n = 0 Then
        Sheets(1).Cells(3, 3).Value = Sheets(2).Cells(i, 2)
        n = n + 1
    End If

    ElseIf n > 0 Then

        For j = 3 To n + 2
            If Sheets(2).Cells(2, i).Value = Sheets(1).Cells(j, 2).Value Then

                If Sheets(2).Cells(2, i).Value <> Sheets(1).Cells(j, 2).Value Then
                x = x
                Else
                x = x + 1
                End If
            End If
        Next

    If x = 0 Then
    Sheets(1).Cells(3 + n, 3).Value = Sheets(2).Cells(2, i).Value
    n = n + 1
    End If
End If

x = 0

Next


End If
End Sub

请让我知道您的专家的想法!

1 个答案:

答案 0 :(得分:1)

编辑2;宏会在<?php echo get_the_date(); ?>第1行中找到Sheet1.Range("A1").Value,然后循环遍历Sheet2中找到的值下方的每个单元格。然后,它在Sheet2中找到每个像元值。然后,它将从右侧的下一个单元格复制Sheet1中的单元格值,并将该值在Sheet2的单元格中移至右侧的下一个单元格。然后,它向下循环到Sheet1中的下一个单元格,并执行相同的任务,等等。

sheet2