Algorithm Excel VBA,用于返回行ID的多参数过滤器

Algorithm Excel VBA,用于返回行ID的多参数过滤器,algorithm,excel,search,multiple-columns,vba,Algorithm,Excel,Search,Multiple Columns,Vba,我目前有一个算法,可以处理excel工作簿中第24页上的数据。我有3个整数,a、b和c,它们来自第24页上的数据,我需要使用它们来返回第14页上唯一的行ID。A、 B和C分别表示第14页上相应的列(范围),即:第24页的Int A位于第14页的A列中。在b列中输入b,在c列中输入c。合并后的数字将始终从14返回一个单数行ID,在本例中为整数行。我很难用Filter、evaluate和一堆其他Excel函数编写语句。有人知道如何从一个在一张纸上执行的算法中启动一个脚本,然后使用其“生成的a、b、c

我目前有一个算法,可以处理excel工作簿中第24页上的数据。我有3个整数,a、b和c,它们来自第24页上的数据,我需要使用它们来返回第14页上唯一的行ID。A、 B和C分别表示第14页上相应的列(范围),即:第24页的Int A位于第14页的A列中。在b列中输入b,在c列中输入c。合并后的数字将始终从14返回一个单数行ID,在本例中为整数行。我很难用Filter、evaluate和一堆其他Excel函数编写语句。有人知道如何从一个在一张纸上执行的算法中启动一个脚本,然后使用其“生成的a、b、c三个搜索编号”在第14张纸中提取一个行ID吗

row = Sheets("Physical Disk Details").Columns("A").Find(what:=a, LookIn:=xlValues, lookat:=xlWhole) * Sheets("Physical Disk Details").Columns("B").Find(what:=b, LookIn:=xlValues, lookat:=xlWhole) * Sheets("Physical Disk Details").Columns("C").Find(what:=c, LookIn:=xlValues, lookat:=xlWhole)

此函数将返回与为a、b和c提供的内容完全匹配的第一行号。它演示了最简单的范围迭代和I/TH测试之一,它为Excel VBA找到了大多数数据模式搜索子程序的基础。有一些方法可以简化此代码,但它演示了基本原则

如果你阅读了这段代码的每一行,并且理解了它的全部功能,你就可以使用这些原则来完成大多数任务,甚至是模糊地与之相似的任务

Function GetRowNumberByABCMatch(a As Integer, b As Integer, c As Integer) As Integer
    Dim lastRowInDataSet As Integer
    Dim i As Integer

    'get last row containing data in column 1
    lastRowInDataSet = Sheets("Physical Disk Details").Cells(Rows.count, 1).End(xlUp).Row

    'i = current row number, start at row 1
    For i = 1 To lastRowInDataSet
        If Sheets("Physical Disk Details").Range("A" & i).Value = a _
                And Sheets("Physical Disk Details").Range("B" & i).Value = b _
                And Sheets("Physical Disk Details").Range("C" & i).Value = c Then
            'all fields match, return the current row number
            GetRowNumberByABCMatch = i
            'stop processing and return because we found a single match
            Exit Function
        End If
    Next i

    'didn't find a matching row, return -1
    GetRowNumberByABCMatch = -1
End Function

你的问题不是很清楚。请将您编写的代码添加到您的问题中,以便我们可以帮助您使其工作。问题非常清楚。我想从Sheet14中选择RowID,其中Sheet14.ColumnA=a和Sheet14.ColumnB=b以及Sheet14.ColumnC=c。我没有VBA示例。我发现什么都没用。a、 b,c是我的算法返回的整数。例如,0、1和2。表14有A、B、C列,它们有编号。我想选择其中包含0,1,2的rowID。或者在这种情况下,返回我的算法a、b和c中给出的数字。我建议检查Excel公式的DB函数:具体地说,
DGET()
可能就是您可以使用的。DGET不返回rowID。我用一个代码示例更新了我的问题。此公式返回一个数字,但它不是正确的行号。我想在工作表的a列中找到int a(“物理驱动器详细信息”),b列中找到int b,c列中找到c。MSDN和其他站点上的代码示例令人困惑,没有任何东西符合我的要求。这经过了一些修改。我没有考虑直接调用Sheets(x).Range(x).Value。我对函数的参数要求做了更改:函数GetRowNumberByABCMatch(a为整数,b为整数,c为整数)为整数我将数字字符串a、b、c转换为整数。Variant一直给我带来问题,所以我必须确保我的数据类型排列得很好。再次感谢VBA保存。