提问人:Timbo 提问时间:10/28/2022 最后编辑:Ken WhiteTimbo 更新时间:10/29/2022 访问量:28
使用循环将多个行项目索引/匹配到一个页面上
Index/Matching Multiple Line Items on to One Page with Loop
问:
我有一份价目表[数据],其中包含来自众多供应商的多达一千个多个项目。这些会定期从数据库中输出,以便进行排序(按供应商),以便于更新定价和其他各种任务。 从从[数据]创建的列表框中选择搜索条件。 然后,这将与[数据]中的所有订单项和创建的[目录]进行匹配,从而从每行返回多个单元格。为了正确重新进入系统,需要忽略每行上的许多单元格。
到目前为止,我已经创建了一个列表,但是,匹配从第一个供应商项目开始,一直持续到列表的末尾,就好像它与第一个初始匹配之后的项目不匹配一样。
它只需要从所选供应商中挑选数据并返回所需的结果。 原始数据不是按供应商排序的,我希望能够在不先进行数据排序的情况下做到这一点。但即使使用数据排序,它也会运行到列表的末尾。
Private Sub SupplierData_Click()
ListBoxValue = SupplierData.Text
Sheets("Catalogue").Cells(2, 27).Value = ListBoxValue
Unload Me
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim oCell As range
Dim Match As range
Dim i As Long
Dim j As Long
i = 2
j = 0
Set ws1 = ThisWorkbook.Sheets("Catalogue")
Set ws2 = ThisWorkbook.Sheets("Data")
Set Match = ws1.Cells(2, 27)
Do While ws2.Cells(i, 1).Value <> ""
Set oCell = ws2.range("A:A").Find(What:=Match)
If Not oCell Is Nothing Then ws1.Cells(i, 2) = oCell.Offset(j, 0)
If Not oCell Is Nothing Then ws1.Cells(i, 3) = oCell.Offset(j, 1)
If Not oCell Is Nothing Then ws1.Cells(i, 4) = oCell.Offset(j, 9)
i = i + 1
j = j + 1
Loop
End Sub
答:
0赞
Timbo
10/29/2022
#1
解决。 走了一条不同的路线。
Private Sub SupplierData_Click()
ListBoxValue = SupplierData.Text
Sheets("Catalogue").Cells(2, 27).Value = ListBoxValue
Unload Me
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim oCell As range
Dim opt3 as range
Set ws1 = ThisWorkbook.Sheets("Catalogue")
Set ws2 = ThisWorkbook.Sheets("Data")
Set opt3 = ws1.Cells(1, 29)
oCell = 2
While Len(ws2.range("A" & CStr(oCell)).Value) > 0
If ws2.Cells(oCell, 1).Value = opt3 Then
ws1.Cells(oCell, 2).Value = ws2.Cells(oCell, 1)
ws1.Cells(oCell, 4).Value = ws2.Cells(oCell, 2) & " " & ws2.Cells(oCell, 8) & " " & ws2.Cells(oCell, 4)
ws1.Cells(oCell, 5).Value = ws2.Cells(oCell, 3)
ws1.Cells(oCell, 6).Value = ws2.Cells(oCell, 10)
oCell = oCell + 1
Wend
End Sub
评论