具有多个标准的匹配功能

时间:2018-05-23 15:49:38

标签: excel vba excel-vba match

我目前有一个包含各种对象的用户表单。 我想添加一个"搜索和填写表格"功能类似于我在这里找到的(只有我必须匹配4个字段而不是1个):https://www.experts-exchange.com/questions/28706684/VBA-Code-to-Populate-Userform-with-Existing-Records-Edit-them-and-add-them-back-to-the-worksheet.html 我正在搜索的对象是3个文本框,第4个是我为此目的格式化的选定单选按钮:

If radio1 = True Then
criteria4 = "radio1"
ElseIf radio2 = True Then
criteria4 = "radio2"
ElseIf radio3 = True Then
criteria4 = "radio3"
ElseIf radio4 = True Then
criteria4 = "radio4"
End If

我已经为"搜索"尝试了一些方法。组件没有成功:

- 使用匹配功能(以各种方式格式化,其中一个如下所示,无论我怎样尝试都无法评估)

formula = "match(" & criteria1 & criteria2 & criteria3 & criteria4 & ",a2:a999&b2:b999&e2:e999&f2:f999, 0)"
r = Evaluate(formula)

- 使用for循环作为基于if函数匹配的方法(这里我被困在如何获得匹配的行号以便输出,所以我可以稍后使用它来填充相应的表单数据)

lastrow = ws.Cells(Rows.Count, 1).End(xlUp).row

'search for jb, sbj, pckg and jbtyp match
With ws.Range("A1,P" & lastrow)
For row = 2 To .Rows.Count
If .Cells(row, 1).Value Like criteria1 And .Cells(row, 2).Value Like criteria2 And .Cells(row, 5).Value Like criteria3 And .Cells(row, 6).Value Like criteria4 Then
***method of returning row number for the match that can then be use in later code to pull data from this row***
    End If
Next
End With

如果继续采用这些方法之一或其他方法,将非常感谢任何指导。

[编辑]我尝试了以下认为它正在工作,但我已经开始再次使用它并意识到这只允许我搜索第一行(标准1),请帮助......

Set rfound = Columns("A").Find(criteria1, Cells(Rows.Count, "A"), xlValues, xlWhole)
If Not rfound Is Nothing Then
strfirst = rfound.Address
    Do
    If LCase(Cells(rfound.row, "B").Text) = criteria2 And LCase(Cells(rfound.row, "E").Text) = criteria3 And LCase(Cells(rfound.row, "F").Text) = criteria4 Then
r = rfound.row
End If
Set rfound = Columns("A").Find(criteria1, rfound, xlValues, xlWhole)
r = rfound.row
    Me.txt1 = ws.Cells(r, "A")
    ...
    Me.cmbengpos = ws.Cells(r, "I")
    ...
    If ws.Cells(r, "F") = "radio1" Then
    Me.radiopanels.Value = True
    End If
    ...
Loop While rfound.Address <> strfirst
End If
End Sub

1 个答案:

答案 0 :(得分:0)

只是通过并发现了您与我正在从事的项目有一些相似之处,我注意到您说过您正在尝试匹配对象……这可能有帮助,也可能没有。取决于您要匹配的对象属性。

为了轻松快速地查找和检索匹配项,我使用条件加载数组并设置过滤器。复制特殊可见文件以获取过滤后的结果,然后使用getfromclipboard拆分以加载数组。

当我需要不同级别的匹配时,特别是当我需要匹配来自各种可能性的用户请求时,

组合框非常有用。我从剪贴板中提取的结果经常会填充一个组合列表

我可以将它作为项发送到字典或填充键。字典是一种看似简单的方法,可以找到唯一值或创建具有与其他数据的关系的数组。附加的好处是,它们可以作为项容纳几乎任何东西,并且键类似,除了不能为数组,而且必须与其他键唯一。

希望您能找到有用的东西,祝您好运!

相关问题