用于搜索单词的输入框,然后将行复制到另一个工作表

时间:2016-11-29 16:45:16

标签: excel vba excel-vba

我已经复制并更改了VBA的负载以尝试适合我的电子表格和 我已经管理了所有的过滤,复制粘贴,创建图形的东西,但我遇到了麻烦(我是VBA编码的新手)。

在sheet1中,我列出了所有废品原因(从最大到最小的过滤)。 我需要在sheet1中搜索前5个废料原因的所有实例的sheet2(详细信息),然后将工作表2的整行复制到sheet3。

Sheet1

Sheet2

1 个答案:

答案 0 :(得分:0)

如果我必须在已知行中搜索值,我会使用以下内容: l_locate_value_row

这是它的论点:

target我正在寻找的价值,例如vityata

我正在查看

target_sheet表(应该使用vba_name)

Optional l_col As Long = 1列,我正在寻找

Optional l_values_found As Long = 1如果我正在寻找第二个值,而不是第一个值,我会给2。

因此l_locate_value_row("vityata",tbl_main)将返回第一行,其中找到vityata。如果未找到该值,则返回-1

Public Sub Decrement(value_to_decrement, Optional l_minus As Long = 1)

    value_to_decrement = value_to_decrement - l_minus

End Sub

Public Function l_locate_value_row(target As String, target_sheet As Worksheet, Optional l_col As Long = 1, Optional l_values_found As Long = 1) As Long

    For Each my_cell In target_sheet.Range(target_sheet.Cells(l_col, 1), target_sheet.Cells(Rows.Count, l_col))

        If target = my_cell Then
            If l_values_found = 1 Then
                l_locate_value_row = my_cell.Row
                Exit Function
            Else
                Call Decrement(l_values_found)
            End If
        End If
    Next my_cell

    l_locate_value_row = -1

End Function